WooCommerce电子邮件模板中的高级自定义字段

时间:2017-06-23 11:53:47

标签: php wordpress woocommerce advanced-custom-fields email-notifications

我在WooCommerce中使用Advanced Custom Fields (ACF) plugin,我设置了一个名为" tracking-no"的自定义字段。

如何在Woocommerce模板emails/customer-completed-order.php中显示此自定义字段的值?

我正在使用此代码:

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

但我没有得到任何东西。

由于

1 个答案:

答案 0 :(得分:1)

在您的WooCommerce模板中,您应首先获得get_field()中的订单ID作为参数:

<?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模板。你也可以使用那两个类似的钩子:

woocommerce_email_order_meta
woocommerce_email_customer_details