向 Woocommerce 电子邮件和订单添加字段

Posted

技术标签:

【中文标题】向 Woocommerce 电子邮件和订单添加字段【英文标题】:Add field to Woocommerce emails and orders 【发布时间】:2022-01-10 05:09:20 【问题描述】:

我在 Woocommerce 中添加了一个日期选择器,让客户可以选择何时从商店取货。通过拼凑一些代码,我什至设法在后端显示数据,以便管理员可以在订单屏幕上看到这些数据。

然而,我正在努力让数据显示在 Woocommerce 电子邮件或客户的前端订单中。有什么建议吗?

我在后端保存和显示的代码如下:

  
function showe_save_date_order( $order_id ) 
     
    global $woocommerce;
     
    if ( $_POST['collection_date'] ) update_post_meta( $order_id, '_collection_date', esc_attr( $_POST['collection_date'] ) );
     

  
add_action( 'woocommerce_admin_order_data_after_billing_address', 'showe_collection_weight_display_admin_order_meta' );
   
function showe_collection_weight_display_admin_order_meta( $order )     
     
   echo '<p><strong>Collection Date:</strong> ' . get_post_meta( $order->get_id(), '_collection_date', true ) . '</p>';
     
'''

【问题讨论】:

【参考方案1】:

您可以使用woocommerce_email_order_meta 动作挂钩。试试下面的代码。

add_action( 'woocommerce_email_order_meta', 'add_custom_order_meta_to_email', 10, 3 );
function add_custom_order_meta_to_email( $order, $sent_to_admin, $plain_text )

    $collection_date = get_post_meta( $order->get_order_number(), '_collection_date', true );
    
    // Don't display anything if it is empty
    if( empty( $collection_date ) )
        return;
    
    if ( $plain_text === false ) 
        echo '<ul>
                <li><strong>Collection Date: </strong>' . $collection_date . '</li>
            </ul>';
     else 
        echo "Collection Date: ". $collection_date; 
    
    

【讨论】:

这就像一场梦!我开始对自己之前没有解决问题感到有点恼火。

以上是关于向 Woocommerce 电子邮件和订单添加字段的主要内容,如果未能解决你的问题,请参考以下文章

将可变产品的“描述”字段内容添加到 woocommerce“已完成订单”电子邮件

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

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

php [使用操作和过滤器自定义结帐字段]向电子邮件添加自定义WooCommerce结帐字段

根据 WooCommerce 中的自定义字段值将文本添加到订单摘要

WooCommerce:将自定义 Metabox 添加到管理订单页面