首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在电子邮件中添加woocommerce中的自定义字段

无法在电子邮件中添加woocommerce中的自定义字段
EN

Stack Overflow用户
提问于 2015-08-27 10:09:43
回答 3查看 229关注 0票数 0

我在woocommerce中创建了两个自定义字段,如下所示:

代码语言:javascript
复制
add_filter( 'woocommerce_billing_fields', 'custom_woocommerce_billing_fields' );
function custom_woocommerce_billing_fields( $fields ) {

   $fields['billing_state'] = array(
      'label'          => __('State/County', 'woothemes'),
      'placeholder'    => __('State/County', 'woothemes'),
      'required'       => false,
      'class'          => array('input-text')
   );
      $fields['billing_phone']  = array(
      'label'          => __('Phone Number', 'woothemes'),
      'placeholder'    => __('Phone Number', 'woothemes'),
      'required'       => false,
      'class'          => array('input-text')
   );
      $fields['billing_deltime']    = array(
        'label'       => __('Delivery Time', 'woocommerce'),
        'required'    => false,
        'clear'       => false,
        'type'        => 'select',
        'options'     => array(
            '' => __('Select Time', 'woocommerce' ),
            '09:00' => __('09:00 AM', 'woocommerce' ),
            '09:30' => __('09:30 AM', 'woocommerce' ),
            '10:00' => __('10:00 AM', 'woocommerce' ),
            '10:30' => __('10:30 AM', 'woocommerce' ),
            '11:00' => __('11:00 AM', 'woocommerce' ),
            '11:30' => __('11:30 AM', 'woocommerce' ),
            '12:00' => __('12:00 PM', 'woocommerce' ),
            '12:30' => __('12:30 PM', 'woocommerce' ),
            '13:00' => __('01:00 PM', 'woocommerce' ),
            '13:30' => __('01:30 PM', 'woocommerce' ),
            '14:00' => __('02:00 PM', 'woocommerce' ),
            '14:30' => __('02:30 PM', 'woocommerce' ),
            '15:00' => __('03:00 PM', 'woocommerce' ),
            '15:30' => __('03:30 PM', 'woocommerce' ),
            '16:00' => __('04:00 PM', 'woocommerce' ),
            '16:30' => __('04:30 PM', 'woocommerce' ),
            '17:00' => __('05:00 PM', 'woocommerce' ),
            '17:30' => __('05:30 PM', 'woocommerce' ),
            '18:00' => __('06:00 PM', 'woocommerce' )
            )
   );

 return $fields;
}

它是显示在结帐页面,但它没有显示在电子邮件的订单确认。

我使用了以下代码将其添加到电子邮件中:

代码语言:javascript
复制
add_filter('woocommerce_email_order_meta_keys', 'my_woocommerce_email_order_meta_keys');

function my_woocommerce_email_order_meta_keys( $keys ) {
    $keys['Delivery time : '] = '_billing_deltime';
    $keys['Phone Number : '] = '_billing_phone';
    return $keys;
}

请告诉我我错过了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-27 14:14:24

将变量传递给woocommerce_email_order_meta_keys的方法在WooCommerce版本2.3中进行了更改。从2.3开始,您需要向每个键发送一个数组,如下所示:

代码语言:javascript
复制
// WooCommerce 2.3+
function kia_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
    $fields['some_field'] = array(
                'label' => __( 'Some field' ),
                'value' => get_post_meta( $order->id, '_some_field', true ),
            );
    $fields['another_field'] = array(
                'label' => __( 'Another field' ),
                'value' => get_post_meta( $order->id, '_another_field', true ),
            );
    return $fields;
}
add_filter('woocommerce_email_order_meta_fields', 'kia_email_order_meta_keys', 10, 3 );

或者您可以使用我的替代方法,它可以对输出进行更细粒度的控制,这已经由Atif发布,或者您可以阅读关于我的网站的完整教程。

票数 0
EN

Stack Overflow用户

发布于 2015-08-27 11:00:22

请试试这段代码

代码语言:javascript
复制
    function kia_display_email_order_meta( $order, $sent_to_admin, $plain_text ) {
        $some_field = get_post_meta( $order->id, 'Delivery Time', true );
        $another_field = get_post_meta( $order->id, 'Phone Number', true );
       if( $plain_text ){
           echo 'Delivery Time: ' . $some_field . ' Phone Number: ' . $another_field;
       } else {
          echo '<p><strong>Delivery Time:</strong> ' . $some_field. ' <br><strong>Phone Number:</strong> ' . $another_field.'</p>';
       }
    }
    add_action('woocommerce_email_order_meta', 'kia_display_email_order_meta', 30, 3 );
票数 2
EN

Stack Overflow用户

发布于 2015-08-27 11:32:40

代码语言:javascript
复制
//to save the fields
function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['billing_deltime'] ) ) {
        update_post_meta( $order_id, 'billing_deltime', sanitize_text_field( $_POST['billing_deltime'] ) );
    }
    if ( ! empty( $_POST['billing_phone'] ) ) {
        update_post_meta( $order_id, 'billing_phone', sanitize_text_field( $_POST['billing_phone'] ) );
    }
}


add_filter('woocommerce_email_order_meta_keys', 'my_woocommerce_email_order_meta_keys');

function my_woocommerce_email_order_meta_keys( $keys ) {

    $keys['Delivery time : '] = 'billing_deltime';//this should be the metakey
    $keys['Phone Number : '] = 'billing_phone';

    return $keys;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32246530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档