Расширенные настраиваемые поля в шаблонах электронной почты WooCommerce

Я использую плагин Advanced Custom Fields (ACF) в WooCommerce, и я установил настраиваемое поле с именем «нет отслеживания».

Как я могу отобразить значение этого настраиваемого поля в шаблоне Woocommerce emails/customer-completed-order.php?

Я использую этот код:

<?php
    if(get_field('tracking-no'))
    {
        echo '<p>' . get_field('tracking-no') . '</p>';
    }
?>

Но я ничего не понимаю.

Спасибо


person cysus    schedule 23.06.2017    source источник
comment
Обновил мой ответ: отсутствовал ; и добавлена ​​совместимость с предыдущими версиями WooCommerce…   -  person LoicTheAztec    schedule 24.06.2017


Ответы (1)


В шаблоне WooCommerce вы должны сначала получить идентификатор заказа в качестве аргумента в get_field() < / а>:

<?php
    // Get the $order ID (WooCommerce version compatibility)
    if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
        $order_id = int_val( $order->id ); // Older than 3.0
    } else {
        $order_id = int_val( $order->get_id() ); // 3.0+
    }

    $tracking_num = get_field('tracking-no', $order_id );

    if( $tracking_num ){
        echo '<p>' . $tracking_num . '</p>';
    }
?>

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

add_action( 'woocommerce_email_order_details', 'my_custom_field_in_completed_notification', 10, 4 );
function my_custom_field_in_completed_notification( $order, $sent_to_admin, $plain_text, $email ){
    // Get the $order ID (WooCommerce version compatibility)
    if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
        $order_id = int_val( $order->id ); // Older than 3.0
    } else {
        $order_id = int_val( $order->get_id() ); // 3.0+
    }

    $tracking_num = get_field('tracking-no', $order_id );
    if( $tracking_num ){
        echo '<p>' . $tracking_num . '</p>';
    }
}

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

В этом случае мы не переопределяем шаблоны WooCommerce. Вы также можете использовать эти 2 похожих крючка:

woocommerce_email_order_meta
woocommerce_email_customer_details
person LoicTheAztec    schedule 23.06.2017