Пользовательская тема для уведомления о новом заказе по электронной почте в Woocommmerce
В Woocommerce я хотел бы установить продукт, купленный в строке темы электронного письма "новый заказ", что-то вроде этого: New Order - [{product_name}] ({order_number}) - {order_date}
Я это понимаю product_name
Возможно, его нельзя использовать из-за нескольких продуктов. Есть ли способ, которым я все еще могу сделать это, отфильтровав заказанный товар или просто разрешив несколько товаров, так как не проходит много заказов.
Очень новичок в изменении кода темы, но любая помощь будет принята с благодарностью.
1 ответ
Настройки электронной почты для "Нового заказа" должны быть предметом (как в вашем вопросе): New Order - [{product_name}] ({order_number}) - {order_date}
В коде ниже я заменяю {product_name}
по наименованиям товаров товаров (разделенных тире), поскольку в заказе может быть много товаров…
Эта пользовательская функция подключена woocommerce_email_subject_new_order
сделает свое дело:
add_filter( 'woocommerce_email_subject_new_order', 'customizing_new_order_subject', 10, 2 );
function customizing_new_order_subject( $formated_subject, $order ){
// Get an instance of the WC_Email_New_Order object
$email = WC()->mailer->get_emails()['WC_Email_New_Order'];
// Get unformatted subject from settings
$subject = $email->get_option( 'subject', $email->get_default_subject() );
// Loop through order line items
$product_names = array();
foreach( $order->get_items() as $item )
$product_names[] = $item->get_name(); // Set product names in an array
// Set product names in a string with separators (when more than one item)
$product_names = implode( ' - ', $product_names );
// Replace "{product_name}" by the product name
$subject = str_replace( '{product_name}', $product_names, $subject );
// format and return the custom formatted subject
return $email->format_string( $subject );
}
Код помещается в файл function.php вашей активной дочерней темы (или активной темы).
Проверено и работает.
Вы получите что-то вроде этого: