自 WooCommerce 3 以来,您的代码有点过时,有一些错误尝试以下操作:
add_filter( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 );
function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
$meta_key = '_meta_key1'; // <= Here define the correct meta key
$meta_value = $order->get_meta( $meta_key1 );
if ( ! empty( $meta_value1 ) ) {
$fields[ $meta_key1 ] = array(
'label' => __( 'My label 1', "text-domain' ),
'value' => $meta_value1,
);
}
return $fields;
}
代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。
现在要将代码仅限于管理员电子邮件通知,您将使用$sent_to_admin 参数变量,如下所示:
add_filter( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 );
function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
if ( $sent_to_admin ) {
$meta_key1 = '_meta_key1'; // <= Here define the correct meta key
$meta_value1 = $order->get_meta( $meta_key1 );
if ( ! empty( $meta_value1 ) ) {
$fields[ $meta_key1 ] = array(
'label' => __( 'My label 1', "text-domain' ),
'value' => $meta_value1,
);
}
}
return $fields;
}
代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。
这一次,此自定义字段将不会显示在客户电子邮件通知中。
注意:
-
$order->id自 WooCommerce 3 以来不正确。请改用 $order->get_id()。
- WordPress
get_post_meta() 函数可以被 WooCommerce WC_Data get_meta() 方法替换。