在Woocommerce管理员,订单和电子邮件中显示自定义付款字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Woocommerce管理员,订单和电子邮件中显示自定义付款字段相关的知识,希望对你有一定的参考价值。

我需要在管理订单页面,thank_you和电子邮件通知中显示我的自定义结帐字段。

我使用Validate and save additional checkout field for specific payment gateway in Woocommerce答案代码来显示,验证和保存我的自定义字段。

Woocommerce display custom field data on admin order details我试图显示我的自定义字段保存输入值。

这是我到目前为止的代码:

// Display field value on the order edit page
add_action( 'woocommerce_admin_order_data_after_billing_address', 
    'show_Ean_nummer_in_admin', 10, 1 );
    function show_Ean_nummer_in_admin ( $order ){
    // Get "ean" custom field value
    $udfyld_ean = get_post_meta( $order_id, '_udfyld_ean', true );

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

// Display field value on the order emails  
add_action( 'woocommerce_email_order_details', 'ean_in_emails' 50, 1 );
function ean_in_emails( $order, $sent_to_admin, $plain_text, $email ){
      // Get "ean" custom field value
    $udfyld_ean = get_post_meta( $order_id, '_udfyld_ean', true );

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

// Display field value in thank you
add_action( 'woocommerce_thankyou', 'ean_in_thankyou' );
function ean_in_thankyou() {
    // Get "ean" custom field value
    $udfyld_ean = get_post_meta( $order_id, '_udfyld_ean', true );
    // Display "ean" custom field value
    echo '<p>'.__('EAN', 'woocommerce') . $udfyld_ean . '</p>';
}  

但它不起作用。该字段确实附加到数据库,但不会显示在任何位置:

metakey in database

如何正确显示字段?

答案

以下代码将在订单和电子邮件通知中显示您的“Udfyld EAN”自定义字段值:

1)在Woocommerce订单管理单页中显示:

// Display field value on the admin order edit page
add_action( 'woocommerce_admin_order_data_after_shipping_address', 'custom_field_admin_display_order_meta', 10, 1 );
function custom_field_admin_display_order_meta( $order ){
    $business_address = get_post_meta( $order->get_id(), 'Business Address?', true );
    if( $udfyld_ean = $order->get_meta('_udfyld_ean') )
        echo '<p><strong>'.__('Udfyld EAN', 'woocommerce').': </strong> ' . $udfyld_ean . '</p>';
}

代码位于活动子主题(或活动主题)的function.php文件中。经过测试和工作。

enter image description here

2)要在订单收到,订单视图和电子邮件通知上显示,您将使用:

add_filter( 'woocommerce_get_order_item_totals', 'add_udfyld_ean_row_to_order_totals', 10, 3 );
function add_udfyld_ean_row_to_order_totals( $total_rows, $order, $tax_display ) {;

    $new_total_rows = [];

    foreach($total_rows as $key => $total ){
        $new_total_rows[$key] = $total;

        if( $order->get_meta('_udfyld_ean') && 'payment_method' === $key ){
            $new_total_rows['udfyld_ean'] = array(
                'label' => __('Udfyld EAN', 'woocommerce'),
                'value' => esc_html( $order->get_meta('_udfyld_ean') ),
            );
        }
    }

    return $new_total_rows;
}

代码位于活动子主题(或活动主题)的function.php文件中。经过测试和工作。

enter image description here

enter image description here

另一答案

您正在使用以下代码来获取_udfyld_ean的值:

get_post_meta( $order_id, '_udfyld_ean', true );

但问题是,你没有在任何地方定义$order_id。您需要传递订单ID的有效值才能获得预期的输出。

以上是关于在Woocommerce管理员,订单和电子邮件中显示自定义付款字段的主要内容,如果未能解决你的问题,请参考以下文章

WooCommerce 4.0 电子邮件、管理员订单和感谢页面上的自定义结帐和 ACF 字段值

如何将 WordPress 用户角色添加到 Woocommerce 新管理员订单电子邮件主题

向管理员发送电子邮件通知,了解 WooCommerce 中的待处理订单状态

在 WooCommerce 电子邮件通知的订单详细信息表中隐藏自定义费用行

WooCommerce Admin创建订单并在订单支付上添加运费

在订单页面 (WooCommerce) 上启用“只读”,以便为商店经理创建订单和客户电子邮件