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

替换woocommerce_add_order_item_meta代码后无法添加自定义字段至订单及邮件

WooCommerce自定义字段添加至订单及邮件的修复方案

你的替换代码存在两个关键错误,导致自定义字段无法正常添加:

  • 钩子woocommerce_checkout_create_order_line_item的参数定义错误,它的默认参数顺序是$item, $cart_item_key, $cart_item, $order,并非你写的$item_id, $values
  • 错误调用了钩子函数本身,应该使用订单行项对象的add_meta_data()方法来添加自定义元数据

正确代码示例

add_action('woocommerce_checkout_create_order_line_item', 'add_custom_item_meta_to_order', 10, 4);
function add_custom_item_meta_to_order($item, $cart_item_key, $cart_item, $order) {
    // 检查购物车项中是否存在_goodlen字段且不为空
    if (empty($cart_item['_goodlen'])) {
        return;
    }
    // 添加元数据,第三个参数设为true表示在订单和邮件中自动显示
    $item->add_meta_data('Flavours', $cart_item['_goodlen'], true);
}

关键改动说明

  1. 参数调整:将钩子的参数改为正确的4个,确保能获取到购物车项数据和订单行项对象
  2. 元数据添加方式:用$item->add_meta_data()替代过时的woocommerce_add_order_item_meta,第三个参数true会让该元数据自动出现在订单详情页和订单邮件中
  3. 函数命名优化:改成更清晰的函数名,避免与钩子名混淆(可选,但更规范)

额外检查点

  • 确认购物车项中的字段键确实是_goodlen,可以在测试环境用var_dump($cart_item)查看购物车项的完整数据,验证字段是否存在
  • 如果是前端自定义添加的字段,要确保该字段在商品加入购物车时已正确保存到购物车项中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:55:18