Отображение значения настраиваемого поля в шаблоне уведомления по электронной почте Woocommerce

В WooCommerce я использую плагин "WC Fields Factory" для создания настраиваемого поля 'serial'. Мне нужно отобразить его значение в файле шаблона /woocommerce/emails/customer-completed-order.php.

Я пытался использовать:

echo get_post_meta(get_post()->ID, "wccaf_serial", true );

Но это не работает.

Что я делаю неправильно?

Спасибо


person Fost    schedule 17.07.2017    source источник


Ответы (2)


Вы можете напрямую использовать $order со всеми WC_Order методами в этом шаблоне электронной почты, чтобы получить идентификатор заказа следующим образом:

// Get the Order ID (WooCommerce retro-compatibility)
$order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;

// Get "serial" custom field value
$serial = get_post_meta($order_id, "wccaf_serial", true );

// Display "serial" custom field value
echo '<p>'.__('Serial', 'woocommerce') . $serial . '</p>';

Прочтите: Структура шаблона + переопределение шаблонов через тему


Также вместо переопределения этого шаблона вы можете использовать любой доступный хук, например:

add_action( 'woocommerce_email_order_details', 'action_wc_email_order_details' 50, 4 );
function action_wc_email_order_details( $order, $sent_to_admin, $plain_text, $email ){
    // Get the Order ID (WooCommerce retro-compatibility)
    $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;

    // Get "serial" custom field value
    $serial = get_post_meta($order_id, "wccaf_serial", true );

    // Display "serial" custom field value
    echo '<p>'.__('Serial', 'woocommerce') . $serial . '</p>';
}

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

Код протестирован и работает в WooCommerce 2.6.x или 3+.

person LoicTheAztec    schedule 17.07.2017
comment
Большое спасибо за ответ! Это действительно было полезно. Но, к сожалению, я до сих пор не могу получить желаемый результат. Я получаю текст (Serial) + пустое значение переменной. Я еще раз проверил имя и значение поля serial, но это не помогло (я использую поле admin с текстовым значением). В любом случае, я постараюсь продолжить. Спасибо. - person Fost; 18.07.2017
comment
@Fost Вы должны проверить непосредственно в базе данных в таблице wp_postmeta поиск wccaf_serial meta_key. Если вы его не получили, найдите идентификатор заказа (post_id), чтобы узнать, получили ли вы какой-либо серийный мета_ключ… - person LoicTheAztec; 18.07.2017
comment
Спасибо, я сделал поиск и получил 5 полей (возможно, я скопировал и удалил это поле для проверки) с именем wccaf_serial. Первое поле со значением meta_value {тип: текст, метка: серийный номер, имя: серийный номер, r.... Остальные поля пусты. - person Fost; 18.07.2017

Взгляните на WP HTML Mail. Этот плагин имеет встроенный почтовый конструктор для электронной почты WooCommerce. Вы можете редактировать содержимое своей почты в редакторе WordPress и добавлять настраиваемые поля из меню «Заполнитель». Вот несколько скриншотов: http://wp-html-mail.com/woocommerce-custom-email-content/

person Hannes    schedule 18.07.2017