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

如何在访问WordPress外的自定义PHP页面时清空WooCommerce购物车

如何在外部PHP页面清空WooCommerce购物车

你的需求很明确——用户访问外部的追加销售页面example.com/upsell.php时自动清空WooCommerce购物车会话。因为这个页面不在WordPress系统内,直接调用WooCommerce的函数是行不通的,得先把WordPress的环境拉进来才行。下面是具体的实现步骤和代码:

核心思路

要在外部页面操作WooCommerce购物车,必须先加载WordPress的核心文件,这样才能使用WooCommerce提供的API和会话管理功能。之后就可以调用官方的购物车清空方法,确保购物车完全重置。

完整代码示例

把这段代码放在upsell.php的最顶部(任何输出之前):

// 加载WordPress核心文件,根据你的目录结构调整路径
// 示例:如果upsell.php和WordPress根目录同级,用下面的路径
require_once(__DIR__ . '/wp-load.php');

// 确保WooCommerce插件已激活并加载
if (class_exists('WooCommerce')) {
    // 初始化WooCommerce用户会话(防止会话未建立导致清空失败)
    if (isset(WC()->session) && !WC()->session->has_session()) {
        WC()->session->set_customer_session_cookie(true);
    }

    // 调用WooCommerce内置方法清空购物车商品
    WC()->cart->empty_cart();

    // 可选:彻底清空购物车相关的会话数据(比如优惠券、临时计算数据)
    if (isset(WC()->session)) {
        WC()->session->__unset('cart');
        WC()->session->__unset('applied_coupons');
        WC()->session->__unset('coupon_discount_amounts');
        WC()->session->__unset('cart_totals');
    }
}

关键细节说明

  • 路径调整:wp-load.php的路径一定要对应你的服务器目录结构。比如如果upsell.php在example.com/landing/upsell.php,那路径应该写成require_once(__DIR__ . '/../wp-load.php');(../表示回到上一级目录)。如果不确定路径,可以用echo __DIR__;打印当前文件的绝对路径,再对照WordPress根目录的位置调整。
  • 会话初始化:有些用户访问外部页面时,WooCommerce的会话还没创建,直接调用empty_cart()可能不起作用,所以先通过set_customer_session_cookie(true)初始化会话,确保购物车操作能生效。
  • 额外会话清理:empty_cart()主要是移除购物车商品,但如果之前用户使用过优惠券或者有临时的购物车计算数据,建议加上可选部分的代码,彻底清空相关会话,避免后续追加销售流程出现干扰。

测试验证

部署代码后,你可以按以下步骤测试:

  1. 先在WooCommerce购物车里添加几个商品
  2. 访问example.com/upsell.php
  3. 回到example.com/store/cart/查看购物车是否已清空

如果一切正常,用户每次进入追加销售页面时,购物车都会被重置,不会影响后续的商品添加流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:38:41