Problem with add_action

时间:2019-12-30 作者:Amir

每次订阅状态更改为活动时,我都需要运行一个函数,这是我的代码:

add_action( \'woocommerce_subscription_status_active\', array( __CLASS__,\'add_subscription_course_access\' ) );
public static function add_subscription_course_access( $order )
    {

    $products = $order->get_items();
    $customer_id = $order->get_customer_id();

    $courses_id = get_field(\'user-programs\', \'user_\'. $customer_id);
    $courses_id = str_replace("[","",$courses_id);
    $courses_id = str_replace("]","",$courses_id);
    $courses_id = explode(",",$courses_id);

    foreach ( $courses_id as $course_id ) {
        ld_update_course_access( $customer_id, $course_id );
    }
}
它在本地主机上工作,但在实时站点上不工作!

1 个回复
最合适的回答,由SO网友:Vincent Guesné 整理而成

你没有正确调用回调函数。

如果你想在面向对象编程上编码,你必须创建你的类,并用add\\u action构造函数。。。

以下是有关它的更多信息:https://wordpress.stackexchange.com/a/48094/9716

或者你做了这样的事情(没有大便,但也很有效)。

add_action( \'woocommerce_subscription_status_active\', \'add_subscription_course_access\' ) );
function add_subscription_course_access( $order )
    {

    $products = $order->get_items();
    $customer_id = $order->get_customer_id();

    $courses_id = get_field(\'user-programs\', \'user_\'. $customer_id);
    $courses_id = str_replace("[","",$courses_id);
    $courses_id = str_replace("]","",$courses_id);
    $courses_id = explode(",",$courses_id);

    foreach ( $courses_id as $course_id ) {
        ld_update_course_access( $customer_id, $course_id );
    }
}

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。