【问题标题】:Enable a custom field placeholder to Woocommerce email subject为 Woocommerce 电子邮件主题启用自定义字段占位符
【发布时间】: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 中向电子邮件主题添加自定义动态占位符?

【问题讨论】:

    标签: php wordpress woocommerce placeholder email-notifications


    【解决方案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}...

    【讨论】:

      猜你喜欢
      • 2019-03-30
      • 1970-01-01
      • 2020-11-22
      • 2019-04-25
      • 2018-10-11
      • 2020-03-11
      • 2019-04-01
      • 1970-01-01
      • 2019-06-25
      相关资源
      最近更新 更多