#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. Привет, Джейдип, я попытался добавить то, что вы предложили, но это все еще не срабатывает