【问题标题】:Updating Memberpress expiry date after transaction created创建交易后更新 Memberpress 到期日期
【发布时间】:2020-01-12 19:32:06
【问题描述】:

我想将 Memberpress 的到期日期指定为距当前到期日期 1(或 2)年,而不是将年份添加到今天的日期,这是默认行为。

我正在使用带有重力压力机的重力表格来注册会员。在表单中,我获取当前的到期日期,为其添加适当的年数,然后将其放入另一个字段中,当表单保存时会进入 usermeta。

我正在尝试使用以下代码在交易完成时更新到期日期。

我走对了吗?

 $transaction = $event->get_data();
 $user = $transaction->user();

 if(($subscription = $transaction->subscription_id)) {
   $subscription_number = $subscription->subscr_id;
   //This transaction belongs to a recurring subscription
 }
 else {
   $transaction_number = $transaction->trans_num;
   //This is a non-recurring transaction
 }

global $wpdb;

$newdate = mysql_result(mysql_query("SELECT yearFromNow FROM usermeta WHERE userid = ".$user. "and meta_key = 'mepr_mepr_yearfromnow' " ), 0);

$insertdate = mysql_result(mysql_query("INSERT into wp_mepr_transactions max(expires_at) value ".$newdate." into WHERE userid = ".$user ), 0);


}
add_action('mepr-event-transaction-completed', 'mepr_capture_completed_transaction'); ```

【问题讨论】:

    标签: php mysql wordpress gravityforms memberpress


    【解决方案1】:

    在假设返回值中有结果之前,应检查 SQL 查询是否有错误。

    总是看起来在 SQL 中做得最多,而不是检索到 PHP 然后重用数据。例如,在您的情况下,有一个 INSERT .. SELECT 可能有用。

    注意语法,您的INSERT 语句不符合现有语法,并且很难弄清楚其意图。

    【讨论】:

    • 我将插入语句更改为:$insertdate = mysql_result(mysql_query("INSERT into wp_mepr_transactions expires_at value ".$newdate." WHERE userid = ".$user . "and ". $transaction. "== trans_num" ), 0); 我将按照您的建议将其更改为 INSERT .. SELECT。现在,我只需要弄清楚如果会员资格是他们以前没有过的,为什么它不插入新日期。
    猜你喜欢
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 2020-08-23
    • 2017-01-29
    • 1970-01-01
    • 2020-11-17
    • 2017-11-22
    相关资源
    最近更新 更多