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

如何在WooCommerce的订单元数据中添加指定cookie的值?

WooCommerce存储自定义Cookie到订单元数据的修复方案

原有代码问题

你当前的代码有两个核心错误,无法稳定运行:

  • 钩子使用错误:init 是WordPress全局初始化钩子,不会传入订单ID参数,函数内获取到的$order_id永远为空,存储逻辑会直接跳出
  • 元数据键名不规范:使用some default value作为键名可读性很差,后续调取维护容易出错

修正后代码

推荐使用WooCommerce官方提供的订单创建钩子woocommerce_checkout_update_order_meta,触发时机刚好在订单生成后,会自动传入订单ID参数,逻辑更稳定:

add_action('woocommerce_checkout_update_order_meta', 'save_my_cookie_to_order_meta', 10, 1);
function save_my_cookie_to_order_meta( $order_id ){
    if ( isset($_COOKIE['my_cookie']) && empty(get_post_meta($order_id, 'my_cookie_value', true)) ) {
        update_post_meta( $order_id, 'my_cookie_value', sanitize_text_field($_COOKIE['my_cookie']) );
    }
}

补充说明

如果需要在用户进入订单感谢页时才存储Cookie值,可以把钩子替换为woocommerce_thankyou,其余代码无需改动。
你当前已经可以在Postman中正常查看元数据,说明元数据的输出逻辑没问题,替换上述代码即可实现稳定存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:24:02