在 WooCommerce 电子邮件通知中显示第二个自定义字段
Displaying a second custom field on WooCommerce email notifications
我已将两个自定义字段添加到我的 WooCommerce 结帐页面。我设法让它们出现在前端和后端。
下一步是获取要在订单电子邮件中显示的字段。我找到了 phone 号码的这段代码,它非常适合 phone 号码自定义字段:
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 ) {
$fields['meta_key'] = array(
'label' => __( 'Shipping Phone' ),
'value' => get_post_meta( $order->id, '_shipping_phone', true ),
);
return $fields;
}
但是这段代码是为一个字段编写的,只能显示 phone 数字字段。
现在我需要调整代码以显示电子邮件字段。我在下面尝试过,但它用电子邮件字段替换了 Phone 数字字段,而不是同时添加两者。
我做错了什么?
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 ) {
$fields['meta_key'] = array(
'label' => __( 'Shipping Phone' ),
'value' => get_post_meta( $order->id, '_shipping_phone', true ),
); // I also tried to replace this ; with , but it returned an error //
$fields['meta_key'] = array(
'label' => __( 'Shipping Email' ),
'value' => get_post_meta( $order->id, '_shipping_email', true ),
);*/
return $fields;
}
你错过了正确的meta_key
改为这样使用:
function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
// Get meta
$shipping_phone = $order->get_meta( '_shipping_phone', true );
// NOT empty
if( ! empty( $shipping_phone ) ) {
$fields['_shipping_phone'] = array(
'label' => __( 'Shipping Phone' ),
'value' => $shipping_phone,
);
}
// Get (other) meta
$shipping_email = $order->get_meta( '_shipping_email', true );
// NOT empty
if ( ! empty( $shipping_email ) ) {
$fields['_shipping_email'] = array(
'label' => __( 'Shipping Email' ),
'value' => $shipping_email,
);
}
return $fields;
}
add_filter( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 );
我已将两个自定义字段添加到我的 WooCommerce 结帐页面。我设法让它们出现在前端和后端。
下一步是获取要在订单电子邮件中显示的字段。我找到了 phone 号码的这段代码,它非常适合 phone 号码自定义字段:
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 ) {
$fields['meta_key'] = array(
'label' => __( 'Shipping Phone' ),
'value' => get_post_meta( $order->id, '_shipping_phone', true ),
);
return $fields;
}
但是这段代码是为一个字段编写的,只能显示 phone 数字字段。
现在我需要调整代码以显示电子邮件字段。我在下面尝试过,但它用电子邮件字段替换了 Phone 数字字段,而不是同时添加两者。
我做错了什么?
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 ) {
$fields['meta_key'] = array(
'label' => __( 'Shipping Phone' ),
'value' => get_post_meta( $order->id, '_shipping_phone', true ),
); // I also tried to replace this ; with , but it returned an error //
$fields['meta_key'] = array(
'label' => __( 'Shipping Email' ),
'value' => get_post_meta( $order->id, '_shipping_email', true ),
);*/
return $fields;
}
你错过了正确的meta_key
改为这样使用:
function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
// Get meta
$shipping_phone = $order->get_meta( '_shipping_phone', true );
// NOT empty
if( ! empty( $shipping_phone ) ) {
$fields['_shipping_phone'] = array(
'label' => __( 'Shipping Phone' ),
'value' => $shipping_phone,
);
}
// Get (other) meta
$shipping_email = $order->get_meta( '_shipping_email', true );
// NOT empty
if ( ! empty( $shipping_email ) ) {
$fields['_shipping_email'] = array(
'label' => __( 'Shipping Email' ),
'value' => $shipping_email,
);
}
return $fields;
}
add_filter( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 );