You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WooCommerce邮件通知中获取自定义元字段值

解决WooCommerce邮件中获取自定义订单项元字段的问题

看起来你遇到的核心问题有两个:一是订单项的自定义元字段可能没正确保存到订单中(因为钩子用错了),二是即便保存成功,邮件模板默认也不会自动输出这些自定义元数据。咱们一步步来搞定:

第一步:确保自定义元字段正确保存到订单项

你当前的函数wdm_add_custom_order_line_item_meta用错了钩子!woocommerce_email_order_details是邮件触发的钩子,根本不是用来保存订单项元数据的。正确的钩子应该是woocommerce_checkout_create_order_line_item,它会在结账时把购物车项的元数据同步到订单行项里。修改后的保存代码如下:

function wdm_add_custom_order_line_item_meta($item, $cart_item_key, $values, $order) {
    if(array_key_exists('wdm_name', $values)) {
        // 添加元数据,第三个参数控制是否在后台可见(true=隐藏,false=直接显示)
        $item->add_meta_data('_wdm_name', $values['wdm_name'], true);
    }
}
// 替换成正确的钩子,参数数量要匹配(最后一个4代表接收4个参数)
add_action( 'woocommerce_checkout_create_order_line_item', 'wdm_add_custom_order_line_item_meta', 10, 4 );

保存后,你可以去WooCommerce后台查看订单的订单项,确认_wdm_name是否已经被正确保存(如果第三个参数设为false,会直接显示在订单项下方;设为true则需要点击"显示隐藏元数据"查看)。

第二步:在邮件通知中输出自定义元字段

接下来,我们需要在邮件的订单详情里把这个字段显示出来。用woocommerce_email_order_details钩子,循环每个订单项,取出自定义元数据并输出:

function wdm_display_custom_meta_in_email($order, $sent_to_admin, $plain_text, $email) {
    // 循环订单的每个订单项
    foreach( $order->get_items() as $item_id => $item ) {
        // 获取自定义元字段的值
        $wdm_name = $item->get_meta('_wdm_name');
        
        // 如果值存在,就输出(区分纯文本和HTML邮件格式)
        if( !empty($wdm_name) ) {
            if( $plain_text ) {
                echo '自定义名称: ' . $wdm_name . "\n";
            } else {
                echo '<p><strong>自定义名称:</strong> ' . esc_html($wdm_name) . '</p>';
            }
        }
    }
}
// 优先级设为20,确保在默认订单详情之后输出,也可以改成5让它显示在前面
add_action( 'woocommerce_email_order_details', 'wdm_display_custom_meta_in_email', 20, 4 );

小提示:

  • 使用esc_html()是为了防止恶意代码注入,保证输出内容的安全性。
  • 如果你的自定义元字段是订单级别的(不是绑定到单个商品项),那可以用$order->get_meta('_your_meta_key')直接获取,但根据你的代码逻辑,订单项级别的获取方式更适配。

把这两段代码添加到主题的functions.php文件或者自定义插件里,测试一下邮件通知,就能看到你的自定义元字段正常显示啦!

内容的提问来源于stack exchange,提问作者Aleks Pvn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:22:59