Есть задача отправлять письма при отмене заказов со статусом Pending.
В коде Woocommerce разобраться довольно сложно, да и за изучения плагинов никто не платит. Тем не менее.
Было установлено, что сначала необходимо добавить action в существующий список возможных событий для отправки писем при смене статуса заказа. Это возможно через фильтр
function add_cancel_order_email_action($attrs) {
$attrs[] = 'woocommerce_order_status_pending_to_cancelled';
return $attrs;
}
add_filter('woocommerce_email_actions', 'add_cancel_order_email_action');
Добавление этого action в список генерирует хук
'woocommerce_order_status_pending_to_cancelled_notification', который можно с легкостью вставить в тело конструктора
WC_Email_Cancelled_Order таким образом:
// Triggers for this email
add_action( 'woocommerce_order_status_pending_to_cancelled_notification', array( $this, 'trigger' ), 10, 2 );
add_action( 'woocommerce_order_status_processing_to_cancelled_notification', array( $this, 'trigger' ), 10, 2 );
add_action( 'woocommerce_order_status_on-hold_to_cancelled_notification', array( $this, 'trigger' ), 10, 2 );
Но править плагины - дурной тон и при обновлении все поломается.
Казалось бы, решение вопроса можно реализовать в functions.php:
add_action( 'woocommerce_order_status_pending_to_cancelled_notification', array( 'WC_Email_Cancelled_Order', 'trigger' ), 10, 2 );
Но, увы, этот класс не виден.