在电子邮件通知上显示自定义结账账单字段
Displaying custom checkout billing field on email notifications
在 WooCommerce 中,我想在结帐时添加一些自定义字段,这些字段将显示在电子邮件确认的 billing 部分下。
我的自定义字段及其值显示在结帐表单和后端的订单页面上(WooCommerce -> 订单)。到目前为止一切正常。
问题是我收到的电子邮件不包含自定义字段及其值。
代码如下:
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_field_testing'] = array(
'label' => __('TestingField', 'woocommerce'),
'placeholder' => _x('TestingField', 'placeholder', 'woocommerce'),
'required' => false,
'class' => array('form-row-wide'),
'clear' => true
);
return $fields;
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );
function my_custom_checkout_field_display_admin_order_meta($order)
{
echo '<p><strong>'.__('TestingField').':</strong> ' . get_post_meta( $order->id, '_billing_field_testing', true ) . '</p>';
}
请帮忙。
提前致谢
您需要将 woocommerce/templates/emails/ 下的电子邮件模板自定义为 your-theme/woocommerce/emails/
你可以覆盖任何你想要的模板,然后在那里添加自定义字段。
或者,您也可以使用以下代码中的钩子添加它们:
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' => __( 'Label' ),
'value' => get_post_meta( $order->id, 'meta_key', true ),
);
return $fields;
}
更新: 要在账单地址下方的电子邮件通知中显示您的自定义结帐字段,请使用挂接到 woocommerce_email_customer_details
[=20= 中的此函数] 优先级高于 20 的操作挂钩:
add_action('woocommerce_email_customer_details','add_custom_checkout_field_to_emails_notifications', 25, 4 );
function add_custom_checkout_field_to_emails_notifications( $order, $sent_to_admin, $plain_text, $email ) {
$output = '';
$billing_field_testing = get_post_meta( $order->id, '_billing_field_testing', true );
if ( !empty($billing_field_testing) )
$output .= '<div><strong>' . __( "Some text:", "woocommerce" ) . '</strong> <span class="text">' . $billing_field_testing . '</span></div>';
echo $output;
}
代码在您的活动子主题(或主题)的 function.php 文件或任何插件文件中。
此代码已经过测试并且有效。
在 WooCommerce 中,我想在结帐时添加一些自定义字段,这些字段将显示在电子邮件确认的 billing 部分下。 我的自定义字段及其值显示在结帐表单和后端的订单页面上(WooCommerce -> 订单)。到目前为止一切正常。
问题是我收到的电子邮件不包含自定义字段及其值。
代码如下:
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_field_testing'] = array(
'label' => __('TestingField', 'woocommerce'),
'placeholder' => _x('TestingField', 'placeholder', 'woocommerce'),
'required' => false,
'class' => array('form-row-wide'),
'clear' => true
);
return $fields;
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );
function my_custom_checkout_field_display_admin_order_meta($order)
{
echo '<p><strong>'.__('TestingField').':</strong> ' . get_post_meta( $order->id, '_billing_field_testing', true ) . '</p>';
}
请帮忙。
提前致谢
您需要将 woocommerce/templates/emails/ 下的电子邮件模板自定义为 your-theme/woocommerce/emails/
你可以覆盖任何你想要的模板,然后在那里添加自定义字段。
或者,您也可以使用以下代码中的钩子添加它们:
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' => __( 'Label' ),
'value' => get_post_meta( $order->id, 'meta_key', true ),
);
return $fields;
}
更新: 要在账单地址下方的电子邮件通知中显示您的自定义结帐字段,请使用挂接到 woocommerce_email_customer_details
[=20= 中的此函数] 优先级高于 20 的操作挂钩:
add_action('woocommerce_email_customer_details','add_custom_checkout_field_to_emails_notifications', 25, 4 );
function add_custom_checkout_field_to_emails_notifications( $order, $sent_to_admin, $plain_text, $email ) {
$output = '';
$billing_field_testing = get_post_meta( $order->id, '_billing_field_testing', true );
if ( !empty($billing_field_testing) )
$output .= '<div><strong>' . __( "Some text:", "woocommerce" ) . '</strong> <span class="text">' . $billing_field_testing . '</span></div>';
echo $output;
}
代码在您的活动子主题(或主题)的 function.php 文件或任何插件文件中。
此代码已经过测试并且有效。