Отправка электронной почты Woocommerce при пользовательском действии не работает

#php #wordpress #woocommerce

#php #wordpress #woocommerce

Вопрос:

Я пытаюсь отправить пользовательское электронное письмо при публикации сообщения с использованием шаблона электронной почты Woocommerce.

Я включил шаблон и класс, которые Woocommerce загружает с помощью woocommerce_email_classes , а также зарегистрировал пользовательское действие send_entry_list в woocommerce_email_actions фильтре.

 do_action('send_entry_list', $competition_id, $entry_list_url); 
 

При добавлении add_action к этому в class-entry-list-email.php which запускает электронное письмо, оно не выводится « triggered при отладке.файл журнала.

Кто-нибудь знает, почему это не срабатывает?

 public function __construct() {
   add_action( 'send_entry_list', array( $this, 'trigger' ) );
}

public function trigger( $competition_id, $entry_list_url ) {
    error_log(print_r('triggered', true));
}
add_filter( 'woocommerce_email_classes', array($this, 'add_draw_number_email'));

function add_draw_number_email( $email_classes ) {
    // include our custom email class
    require( 'includes/class-entry-list-email.php' );

    // add the email class to the list of email classes that WooCommerce loads
    $email_classes['Entry_List_Email'] = new Entry_List_Email();

    return $email_classes;
}

add_filter( 'woocommerce_email_actions', array($this, 'crwc_register_custom_order_status_action'));


function crwc_register_custom_order_status_action( $actions ) {

    $actions[] = 'send_entry_list';

    return $actions;
}
 

Ответ №1:

На самом деле, вы упускаете _notification из add_action виду перехват. В электронной почте WooCommerce вам нужно добавить _notification tag имя do_action .

В вашем случае вы используете send_entry_list в обоих do_action , и add_action тогда как в add_action вам просто нужно добавить _notification tag имя, чтобы стало имя крючка send_entry_list_notification .

Чтобы упростить это для вас, просто внесите следующее изменение.

Замените эту строку:

 add_action( 'send_entry_list', array( $this, 'trigger' ) );
 

с помощью этого:

 add_action( 'send_entry_list_notification', array( $this, 'trigger' ), 10, 2 );
 

Надеюсь, это сработает для вас.

Комментарии:

1. Привет, Сами, это работает! Как получилось, что добавление _notification в конец заставляет это работать?

Ответ №2:

Измените хук, как показано ниже, и попробуйте,

add_action( 'send_entry_list', array( $this, 'trigger' ), 10, 2 );

Комментарии:

1. Привет, Джейдип, я попытался добавить то, что вы предложили, но это все еще не срабатывает