【问题标题】:Displaying a second custom field on WooCommerce email notifications在 WooCommerce 电子邮件通知上显示第二个自定义字段
【发布时间】:2021-02-01 09:39:51
【问题描述】:

我在 WooCommerce 结帐页面中添加了两个自定义字段。我设法让它们出现在前端和后端。

下一步是获取要在订单电子邮件中显示的字段。我发现这段电话号码代码非常适合电话号码自定义字段:

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;
}

但此代码是为一个字段编写的,仅显示电话号码字段。

现在我需要调整代码以显示电子邮件字段。我在下面尝试过这样的操作,但它用电子邮件字段替换了电话号码字段,而不是同时添加两者。

我做错了什么?

 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 ),
    );     // I also tried to replace this ; with , but it returned an error //
    $fields['meta_key'] = array(
        'label' => __( 'Shipping Email' ),
        'value' => get_post_meta( $order->id, '_shipping_email', true ),
    );*/
return $fields;
} 

【问题讨论】:

    标签: php wordpress woocommerce custom-fields email-notifications


    【解决方案1】:

    你错过了正确的meta_key

    改为这样使用:

    function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
        // Get meta
        $shipping_phone = $order->get_meta( '_shipping_phone', true );
        
        // NOT empty
        if( ! empty( $shipping_phone ) ) {  
            $fields['_shipping_phone'] = array(
                'label' => __( 'Shipping Phone' ),
                'value' => $shipping_phone,
            );
        }
        
        // Get (other) meta
        $shipping_email = $order->get_meta( '_shipping_email', true );
        
        // NOT empty
        if ( ! empty( $shipping_email ) ) { 
            $fields['_shipping_email'] = array(
                'label' => __( 'Shipping Email' ),
                'value' => $shipping_email,
            );
        }
        
        return $fields;
    }
    add_filter( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 );
    

    【讨论】:

      猜你喜欢
      • 2020-11-05
      • 2018-08-31
      • 2020-12-07
      • 1970-01-01
      • 2020-09-09
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      相关资源
      最近更新 更多