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

如何通过查询字符串参数设置WooCommerce产品的推荐令牌属性

方案一:将referral_token绑定到预设产品属性的实现方法

注意:该方案不会修改产品全局的默认属性(默认值仍为000),仅对当前用户的对应订单项生效,避免影响其他用户的访问数据。

实现步骤

  1. 首先捕获URL查询参数,存入用户的WooCommerce会话,防止跳转页面后参数丢失
add_action('template_redirect', 'save_referral_token_to_session');
function save_referral_token_to_session() {
    // 仅在产品页触发逻辑
    if (is_product() && isset($_GET['referral_token'])) {
        $token = sanitize_text_field($_GET['referral_token']);
        WC()->session->set('user_referral_token', $token);
    }
}
  1. 加购时将令牌写入购物车项,关联你提前创建的referrer-token属性
add_filter('woocommerce_add_cart_item_data', 'add_token_to_cart_item', 10, 2);
function add_token_to_cart_item($cart_item_data, $product_id) {
    $token = WC()->session->get('user_referral_token');
    if ($token) {
        // 对应预设属性的slug
        $cart_item_data['referrer-token'] = $token;
        // 不同令牌的同款产品生成独立购物车项
        $cart_item_data['unique_key'] = md5(microtime().rand());
    }
    return $cart_item_data;
}
  1. (可选)在购物车、结账页展示当前商品对应的推荐令牌
add_filter('woocommerce_get_item_data', 'display_token_on_cart', 10, 2);
function display_token_on_cart($item_data, $cart_item) {
    if (isset($cart_item['referrer-token'])) {
        $item_data[] = array(
            'key' => 'Referral Token',
            'value' => sanitize_text_field($cart_item['referrer-token'])
        );
    }
    return $item_data;
}
  1. 生成订单时将令牌写入订单项属性,实现后台订单详情可见
add_action('woocommerce_checkout_create_order_line_item', 'save_token_to_order_item', 10, 4);
function save_token_to_order_item($item, $cart_item_key, $values, $order) {
    if (isset($values['referrer-token'])) {
        // 写入订单项元数据,后台直接可见
        $item->add_meta_data('Referral Token', $values['referrer-token'], true);
        // 同步到你预设的产品属性结构,不需要调用$product->save()避免修改全局属性
        $product = $item->get_product();
        $attributes = $product->get_attributes();
        if (isset($attributes['referrer-token'])) {
            $attr = $attributes['referrer-token'];
            $attr->set_options(array($values['referrer-token']));
            $product->set_attributes(array('referrer-token' => $attr));
        }
    }
}
方案二:其他推荐令牌绑定方案
  • Cookie存储方案:将referral_token存入7-30天有效期的Cookie,用户关闭页面后再次访问站点加购,令牌也不会丢失,适合长期溯源的推荐场景
  • 订单级存储:如果同一用户的所有订单商品都归属同一个推荐人,无需单独绑定到单个产品,可以直接将令牌存在订单的全局自定义字段,后台订单详情页顶部即可查看,无需逐个订单项核对
  • 自定义字段存储:不需要提前创建产品属性,直接把令牌作为订单项的自定义字段存储,代码更简洁,没有属性结构耦合的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:24:01