为 Woocommerce 电子邮件主题启用自定义字段占位符
Posted
技术标签:
【中文标题】为 Woocommerce 电子邮件主题启用自定义字段占位符【英文标题】:Enable a custom field placeholder to Woocommerce email subject 【发布时间】:2019-05-29 15:08:09 【问题描述】:在 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 中向电子邮件主题添加自定义动态占位符?
【问题讨论】:
【参考方案1】:要在 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
...
【讨论】:
以上是关于为 Woocommerce 电子邮件主题启用自定义字段占位符的主要内容,如果未能解决你的问题,请参考以下文章
在 WooCommerce Checkout 自定义文本字段中启用 Datepicker
在 Woocommerce 中的产品自定义循环上启用 Ajax 添加到购物车按钮