为 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 中自定义新帐户电子邮件模板

在 Woocommerce 中的产品自定义循环上启用 Ajax 添加到购物车按钮

在 WooCommerce 产品搜索中启用自定义分类

如何在 WooCommerce 中为自定义产品类型启用价格和库存

在 WooCommerce 订单和电子邮件中保存并显示产品自定义元数据