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

WC()->cart->add_to_cart()直接访问购物车页面不生效如何解决?

问题根因

你遇到的执行差异本质是代码触发时机不对:

  • 直接在cart.php模板文件中插入加购代码时,代码执行时机早于WooCommerce会话、购物车对象的完整初始化流程,此时调用add_to_cart生成的购物车修改不会被持久化到会话中,刷新后就会丢失
  • 从站点内其他页面跳转至购物车时,前序页面已经完成了用户会话初始化,此时加购操作可以正常写入会话
  • 手动调用set_customer_session_cookie无效的原因是调用时WC会话类尚未完成初始化,设置的cookie不会被写入响应头返回给浏览器
正确实现方案

不要直接修改cart.php模板文件,将以下代码添加到当前主题/子主题的functions.php文件中即可:

add_action( 'template_redirect', 'auto_add_specified_product_to_cart', 20 );
function auto_add_specified_product_to_cart() {
    // 仅在购物车页面触发
    if ( ! is_cart() ) return;

    // 替换为你要自动添加的商品ID
    $target_product_id = 123;
    $product_in_cart = false;

    // 检查商品是否已在购物车中,避免重复添加
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        if ( $cart_item['product_id'] == $target_product_id ) {
            $product_in_cart = true;
            break;
        }
    }

    // 商品不在购物车时执行添加
    if ( ! $product_in_cart ) {
        WC()->cart->add_to_cart( $target_product_id );
        // 可选:添加后刷新页面保证购物车内容正确展示
        wp_redirect( wc_get_cart_url() );
        exit;
    }
}
验证说明

代码添加完成后清除站点缓存,分别测试访客、登录用户直接访问购物车地址的场景,即可正常触发自动加购逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:18:01