我继承了以下带有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' ) );
:
}
:
}
答案 0 :(得分:1)
您需要找到类实例化的地方:
!important
因此您可以在remove操作中使用此变量。
$ivole_sender = new Ivole_Sender();