在Woocommerce中,我使用以下代码在结帐页面添加了自定义字段:
add_action( 'woocommerce_checkout_fields', 'woo_add_conditional_checkout_fields' );
function woo_add_conditional_checkout_fields( $fields ) {
foreach( WC()->cart->get_cart() as $cart_item ){
$product_id = $cart_item['product_id'];
$fields['billing']['billing_field_newfield'] = array(
'label' => __('New Field', 'woocommerce'),
'placeholder' => _x('', 'placeholder', 'woocommerce'),
'required' => true,
'class' => array('form-row-wide'),
'clear' => false
);
}
return $fields;
}
现在,我想使用{billing_field_newfield}
自定义占位符在“新订单”woocommerce电子邮件主题中包含用户在此字段中输入的值。
然而,当我去Woocommerce>设置>电子邮件>新订单并将{billing_field_newfield}
放入主题时,我只是在电子邮件中获得{billing_field_newfield}
而不是它的实际价值。
如何在Woocommerce中为电子邮件主题添加自定义动态占位符?
要在woocommerce电子邮件通知中添加自定义活动占位符{billing_field_newfield}
,您将使用以下钩子函数。
您将检查之前_billing_field_newfield
是用于将结帐字段值保存到订单的正确的后元键(在wp_postmeta
数据库表中查看订单post_id
)。
代码:
add_filter( 'woocommerce_email_format_string' , 'add_custom_email_format_string', 20, 2 );
function add_custom_email_format_string( $string, $email ) {
// The post meta key used to save the value in the order post meta data
$meta_key = '_billing_field_newfield';
// Get the instance of the WC_Order object
$order = $email->object;
// Get the value
$value = $order->get_meta($meta_key) ? $order->get_meta($meta_key) : '';
// Additional subject placeholder
$new_placeholders = array( '{billing_field_newfield}' => $value );
// Return the clean replacement value string for "{billing_field_newfield}" placeholder
return str_replace( array_keys( $additional_placeholders ), array_values( $additional_placeholders ), $string );
}
代码位于活动子主题(或活动主题)的function.php文件中。它会奏效。
然后在Woocommerce>设置>电子邮件>“新订单”通知中,您将能够使用动态占位符{billing_field_newfield}
...