在插件类中设置时撤消add_action

时间:2019-03-05 15:56:22

标签: wordpress

我继承了以下带有PHP问题的设置,对此我不胜感激:我们正在将ivole的客户对WooCommerce插件的客户评论与Automattic的WooCommerce Bookings结合使用。

WooCommerce的Customer Revierws包含以下类构造函数,该构造函数设置了在订单完成后(即在这种情况下为已付款)向客户发送电子邮件的操作:

class Ivole_Sender {
    public function __construct() {
        :
        add_action( 'woocommerce_order_status_completed_notification', array( $this, 'sender_trigger' ) );
        :
    }
    :
}   

问题在于,由于直到预订的日期已经过去,预订才完成,因此实际上需要附加其他操作:

add_action( 'woocommerce_booking_complete', array( $this, 'sender_trigger' ) );

通常,在function.php(或类似文件)中使用remove_action,然后重新添加操作即可,但是在这种情况下,由于add_action发生在类中,该怎么办我remove_action并没有实际修改插件中的类?

插件加载顺序如下:

ivole.php(插件加载程序):

require_once( 'class-ivole.php' );

class-ivole.php:

require_once('class-ivole-sender.php');

class-ivole-sender.php:

class Ivole_Sender {
    public function __construct() {
        :
        add_action( 'woocommerce_order_status_completed_notification', array( $this, 'sender_trigger' ) );
        :
    }
    :
 }  

1 个答案:

答案 0 :(得分:1)

您需要找到类实例化的地方:

!important

因此您可以在remove操作中使用此变量。

$ivole_sender = new Ivole_Sender();