WooCommerce 订单电子邮件中未显示自定义电话号码字段

Posted

技术标签:

【中文标题】WooCommerce 订单电子邮件中未显示自定义电话号码字段【英文标题】:Custom phone number field not showing in WooCommerce order email 【发布时间】:2021-03-29 17:54:39 【问题描述】:

我已成功将 Ship 中的电话号码字段添加到不同的地址,并且电话号码也显示在后端。但是我没有收到电子邮件中的电话号码。 请帮忙

此代码帮助我添加字段:

add_filter( 'woocommerce_checkout_fields', 'bbloomer_shipping_phone_checkout' );
 
function bbloomer_shipping_phone_checkout( $fields ) 
   $fields['shipping']['shipping_phone'] = array(
      'label' => 'Phone',
      'required' => true,
      'class' => array( 'form-row-wide' ),
   );
   return $fields;

  
add_action( 'woocommerce_admin_order_data_after_shipping_address', 'bbloomer_shipping_phone_checkout_display' );
 
function bbloomer_shipping_phone_checkout_display( $order )
    echo '<p><b>Shipping Phone:</b> ' . get_post_meta( $order->get_id(), '_shipping_phone', true ) . '</p>';


我已尝试在上述代码(如下所示)中添加其他代码以在电子邮件中显示电话号码。还是不行!

add_filter( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 );

function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) 
    $fields['meta_key'] = array(
        'label' => __( 'Shipping Phone' ),
        'value' => get_post_meta( $order->id, '_shipping_phone', true ),
    );
    return $fields;

【问题讨论】:

【参考方案1】:

您缺少正确的meta_key,我还稍微修改了您现有的代码。

注意:通过调整priority 参数,您可以将您的字段设置在正确的位置。

所以你得到:

// Shipping field on my account edit-addresses and checkout
function filter_woocommerce_shipping_fields( $fields )     
    $fields['shipping_phone'] = array(
        'label' => __( 'Shipping Phone', 'woocommerce' ),
        'required' => true,
        'class' => array( 'form-row-wide' ),
        'priority'    => 55
    );
    
    return $fields;

add_filter( 'woocommerce_shipping_fields' , 'filter_woocommerce_shipping_fields', 10, 1 ); 

// Display on the order edit page (backend)
function action_woocommerce_admin_order_data_after_shipping_address( $order ) 
    if ( $value = $order->get_meta( '_shipping_phone' ) ) 
        echo '<p><strong>' . __( 'Shipping Phone', 'woocommerce' ) . ':</strong> ' . $value . '</p>';
    

add_action( 'woocommerce_admin_order_data_after_shipping_address', 'action_woocommerce_admin_order_data_after_shipping_address', 10, 1 );

// Display on email notifications
function filter_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) 
    // Get meta
    $shipping_phone = $order->get_meta( '_shipping_phone' );
    
    // NOT empty
    if ( ! empty( $shipping_phone ) )  
        $fields['_shipping_phone'] = array(
            'label' => __( 'Shipping Phone', 'woocommerce' ),
            'value' => $shipping_phone,
        );
    
    
    return $fields;

add_filter( 'woocommerce_email_order_meta_fields', 'filter_woocommerce_email_order_meta_fields', 10, 3 );

【讨论】:

以上是关于WooCommerce 订单电子邮件中未显示自定义电话号码字段的主要内容,如果未能解决你的问题,请参考以下文章

在Woocommerce电子邮件通知中显示自定义订单状态的付款链接

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

在Woocommerce管理员,订单和电子邮件中显示自定义付款字段

自定义 WooCommerce 日期选择器结帐字段已保存并显示在订单和电子邮件中

Woocommerce:在购物车、订单确认和订单电子邮件中显示变体名称 [重复]

在 X 天 WooCommerce 订单后发送自定义电子邮件 [重复]