Я унаследовал следующую установку с проблемой PHP, о которой я хотел бы подумать: мы используем плагин Отзывы клиентов для WooCommerce от ivole с WooCommerce Bookings от Automattic.
Customer Revierws for WooCommerce содержит следующий конструктор класса, который устанавливает действие для отправки электронного письма клиенту, когда заказ завершен (т.е. оплачен в этом случае):
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' ) );
Как правило, с использованием remove_action
в function.php (или аналогичный), а затем повторное добавление действия было бы хорошо, но в этом случае, когда 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' ) );
:
}
:
}