Добавьте текст в электронные письма, если у позиции заказа Woocommerce есть определенные пользовательские метаданные - PullRequest
3 голосов
/ 05 марта 2019

Я хочу добавить раздел уведомлений к заказным письмам, отправленным администратору , если конкретная мета имеет определенное значение (Umbrella Hole - "YES").

Код до сих пор:

function add_order_instruction_email( $order, $sent_to_admin, $plain_text, $email ) {
    foreach( $order->get_items() as $item ){
        $target_value = $item->get_meta('Umbrella Hole');
        if ($target_value == "Yes") {
            echo '<div style="background-color:antiquewhite;padding:5px;margin-bottom:10px;"><strong><span style="color:red;">Note:</span></strong> Umbrella Hole is present in the order. Please make sure velcro zipper split is requested from supplier too.</div>';
        }
    }
}
add_action( 'woocommerce_email_order_details', 'add_order_instruction_email', 10, 4 );

Но это не работает. Что-то я делаю не так? Использование последних версий WordPress и WooCommerce.

Ссылки:
Получение метаданных элемента пользовательского заказа в Woocommerce 3
Как получить детали заказа WooCommerce
WooCommerce: показывать уведомление по электронной почте о новом заказе, если используется определенный способ оплаты

1 Ответ

2 голосов
/ 05 марта 2019

Я проверил ваш код, и он работает для метаданных зарегистрированного элемента заказа, ключ которого Umbrella Hole, см. Его ниже в таблице wp_woocommerce_order_itemmeta для line_item:

enter image description here

Таким образом, проблема может быть связана только с пользовательскими метаданными заказа, которые не зарегистрированы

Я немного пересмотрел вашкод:

add_action( 'woocommerce_email_order_details', 'add_order_instruction_email', 10, 4 );
function add_order_instruction_email( $order, $sent_to_admin, $plain_text, $email ) {
    // Loop through order items
    foreach ( $order->get_items() as $item ) {
        if ( "Yes" == $item->get_meta('Umbrella Hole') ) {
            echo '<div style="background-color:antiquewhite;padding:5px;margin-bottom:10px;"><strong><span style="color:red;">Note:</span></strong> Umbrella Hole is present in the order. Please make sure velcro zipper split is requested from supplier too.</div>';
            $break; // Stop the loop to avoid repetitions
        }
    }
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы).Протестировано и работает.

Здесь ниже уведомления по электронной почте, когда любая позиция строки заказа имеет зарегистрированные метаданные Umbrella Hole с "yes" в качестве значения:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...