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

WooCommerce实现访问商品页自动加购并离开时清空购物车

WooCommerce 自动加购/清空购物车解决方案

问题分析

你原来的代码存在几个关键问题:

  1. 用is_page($slug)判断商品页错误:商品页属于WooCommerce自定义文章类型product,is_page()仅识别普通WordPress页面,无法匹配商品页。
  2. global $product不可靠:在wp钩子时机,该全局对象可能未完全初始化,导致获取不到商品ID。
  3. 缺少离开商品页的清空逻辑:原代码只处理了进入商品页的情况,未实现离开时清空购物车的需求。

可行代码实现

将以下代码添加到主题的functions.php文件或自定义插件中:

add_action('wp', 'auto_add_product_to_cart_on_product_page');

function auto_add_product_to_cart_on_product_page() {
    // 确保WooCommerce购物车功能正常加载
    if (!function_exists('WC') || !WC()->cart) {
        return;
    }

    // 访问商品页面时:清空购物车并添加当前商品
    if (is_product()) {
        $current_product = get_queried_object();
        $product_id = $current_product->get_id();
        
        WC()->cart->empty_cart();
        WC()->cart->add_to_cart($product_id);
    } 
    // 离开商品页面时:清空购物车
    else {
        WC()->cart->empty_cart();
    }
}

代码说明

  • is_product():专门用于判断当前页面是否为WooCommerce商品页,替代错误的is_page()判断。
  • get_queried_object():可靠获取当前页面的商品对象,避免全局变量未初始化的问题。
  • 双向逻辑处理:进入商品页自动加当前商品,离开则清空购物车,完全匹配需求。
  • 兼容性检查:先验证WooCommerce功能是否可用,避免无意义的报错。

注意事项

  • 建议先在测试环境验证代码效果,再部署到生产环境。
  • 如果站点使用缓存插件,修改代码后需清理缓存才能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:25:18