Изменить тему электронной почты для статусов пользовательских заказов в Woocommerce 3

Я успешно изменил тему электронной почты для заказа обработки Woocommerce (с помощью эта тема):

add_filter( 'woocommerce_email_subject_customer_processing_order', 'email_subject_procs_order', 10, 2 );
function email_subject_procs_order( $formated_subject, $order ){
return sprintf( esc_html__( 'Example of subject #%s', 'textdomain'), $order->get_id() );
}

Но я хочу отправить письмо обработки заказа снова с новой темой после изменения статуса заказа, поэтому я следовал этот протектор подправить тему и т. д.

add_action('woocommerce_order_status_order-accepted', 'backorder_status_custom_notification', 20, 2);
function backorder_status_custom_notification( $order_id, $order ) {
// HERE below your settings
$heading   = __('Your Awaiting delivery order','woocommerce');
$subject = sprintf( esc_html__( 'New subject #%s', 'textdomain'), $order->get_id() );

// Getting all WC_emails objects
$mailer = WC()->mailer()->get_emails();

// Customizing Heading and subject In the WC_email processing Order object
$mailer['WC_Email_Customer_Processing_Order']->heading = $heading;
$mailer['WC_Email_Customer_Processing_Order']->settings['heading'] = $heading;
$mailer['WC_Email_Customer_Processing_Order']->subject = $subject;
$mailer['WC_Email_Customer_Processing_Order']->settings['subject'] = $subject;

// Sending the customized email
$mailer['WC_Email_Customer_Processing_Order']->trigger( $order_id );
}

Но допускается только первое изменение темы электронного письма. Есть ли способ заставить его работать вместе?
Является if( $order->has_status( 'order-accepted' )) право быть использованным?

1

Решение

Вы должны использовать свой пользовательский статус в IF Заявление, чтобы избежать этой проблемы, таким образом:

add_filter( 'woocommerce_email_subject_customer_processing_order', 'email_subject_procs_order', 10, 2 );
function email_subject_procs_order( $formated_subject, $order ){
// We exit for 'order-accepted' custom order status
if( $order->has_status('order-accepted') )
return  $formated_subject;

return sprintf( esc_html__( 'Example of subject #%s', 'textdomain'), $order->get_id() );
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Это должно работать.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]