Отключение электронных писем по подписке Woocommerce (через php, а не через панель администратора) - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь отключить несколько писем о подписках WC (чтобы они не отправлялись).Я знаю, что я могу сделать это в области настроек администратора вручную, однако я пытаюсь сделать это через PHP (в плагине).Причина этого заключается в том, что при перемещении с тестового сайта на работающий сайт соответствующие файлы могут быть просто скопированы, и это можно сделать без каких-либо ручных изменений настроек.

В качестве примера - удаление новогозаказ на продление, отправляемый администратору сайта.

add_action( 'woocommerce_email', 'SA_unhook_unneeded_emails' );
function SA_unhook_unneeded_emails( $email_class ) {
    //remove new_renewal_order email (sent to admin)
    remove_action( 'woocommerce_order_status_pending_to_processing_renewal_notification', array( $this, 'trigger' ) );
    remove_action( 'woocommerce_order_status_pending_to_completed_renewal_notification', array( $this, 'trigger' ) );
    remove_action( 'woocommerce_order_status_pending_to_on-hold_renewal_notification', array( $this, 'trigger' ) );
    remove_action( 'woocommerce_order_status_failed_to_processing_renewal_notification', array( $this, 'trigger' ) );
    remove_action( 'woocommerce_order_status_failed_to_completed_renewal_notification', array( $this, 'trigger' ) );
    remove_action( 'woocommerce_order_status_failed_to_on-hold_renewal_notification', array( $this, 'trigger' ) );
    //remove_action( 'woocommerce_order_status_completed_renewal_notification', array( $this, 'trigger' ) );

}

Раскомментирование последней операции remove_action не имеет значения.Письма все еще отправлены.Я попытался изменить woocommerce_email на wp_head, чтобы увидеть, если что-то изменилось, но ничего не произошло.

Кажется, что есть немного документации (по крайней мере, что я могу найти) на хуках подписок WC, поэтому я 'Я изо всех сил пытаюсь понять, что именно мне нужно сделать, чтобы заставить это работать.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 11 февраля 2019

Не берите в голову это - все, что мне было нужно, это хороший ночной сон!Для тех, кто сталкивается с этим позже, подробности приведены ниже.

Вам необходимо использовать фильтры 'woocommerce_email_enabled_'.this->id.Идентификатор (this->id) можно найти в соответствующих файлах классов для этого типа электронной почты.например,

  • Новый заказ (отправлен администратору) находится в class-wc-email-new-order.php (woocommerce/includes папка) содержит $this->id = 'new_order';
  • Новый заказ на обновление (отправлен администратору): new_renewal_order
  • Заказ на продление (отправка клиенту): customer_processing_renewal_order или customer_completed_renewal_order
//stop emails without using the admin dashboard to manually set enabled/disabled status
add_filter( 'woocommerce_email_enabled_new_order', 'SA_stopemails', 10, 2); //new order sent to admin
add_filter( 'woocommerce_email_enabled_customer_on_hold_order', 'SA_stopemails', 10, 2); //order on hold sent to customer
add_filter( 'woocommerce_email_enabled_customer_processing_order', 'SA_stopemails', 10, 2); //order in processing sent to customer
add_filter( 'woocommerce_email_enabled_new_renewal_order', 'SA_stopemails', 10, 2); //new renewal order sent to admin
add_filter( 'woocommerce_email_enabled_customer_processing_renewal_order', 'SA_stopemails', 10, 2); //renewal order processing sent to customer
add_filter( 'woocommerce_email_enabled_customer_completed_renewal_order', 'SA_stopemails', 10, 2); //renewal order completed sent to customer

function SA_stopemails( $active, $order ) {
    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...