如何在访问特定页面(wordpress之外)自定义php页面时清除woocommerce购物车

如何在访问特定页面(wordpress之外)自定义php页面时清除woocommerce购物车,php,wordpress,woocommerce,hook-woocommerce,Php,Wordpress,Woocommerce,Hook Woocommerce,我有一个woocommerce商店,比如:example.com/store/ 我正在wordpress之外创建一些产品销售页面:example.com/upsell.php 现在,我想在您访问example.com/upsell.php后清除购物车,因为我们在upsell中有多个步骤,最后我们将发送一个url请求以在购物车中添加产品(example.com/store/cart/?add to cart=1,5,8) 无论何时访问“追加销售”页面,我们都需要清除购物车会话 如何从upsell页

我有一个woocommerce商店,比如:example.com/store/

我正在wordpress之外创建一些产品销售页面:example.com/upsell.php

现在,我想在您访问example.com/upsell.php后清除购物车,因为我们在upsell中有多个步骤,最后我们将发送一个url请求以在购物车中添加产品(example.com/store/cart/?add to cart=1,5,8)

无论何时访问“追加销售”页面,我们都需要清除购物车会话


如何从upsell页面清除购物车会话?

我会使用$\u SERVER['REQUEST\u URI']获取页面的当前URL,以便您可以测试是否在upsell页面上

您需要使用以下功能来清除购物车

global $woocommerce;
$woocommerce->cart->empty_cart();

我将使用$\u SERVER['REQUEST\u URI']获取页面的当前URL,这样您就可以测试您是否在upsell页面上

您需要使用以下功能来清除购物车

global $woocommerce;
$woocommerce->cart->empty_cart();

您需要添加一个操作来清除模板重定向钩子中的购物车项目

在自定义函数中,检查当前页面slug&然后根据我们的条件清除购物车

在主题的
functions.php
或自定义插件文件中使用以下代码片段

add_action( 'template_redirect', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
    global $post;
    $slug = $post->post_name;
    if($slug == 'sample-page') {
        global $woocommerce;
        $woocommerce->cart->empty_cart();
    }
}
更新

如果您不喜欢硬编码页面段塞,还有一个更好的方法

add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
    if ( isset( $_GET['clear-cart'] ) ) {
        global $woocommerce;
        $woocommerce->cart->empty_cart();
    }
}
在主题的
functions.php
文件中添加上述代码

然后通过在URL中添加
清除购物车
查询字符串重定向到页面&这将清除所有购物车项目

我们可以在任何URL中使用此函数


您需要添加一个操作来清除模板重定向钩子中的购物车项目

在自定义函数中,检查当前页面slug&然后根据我们的条件清除购物车

在主题的
functions.php
或自定义插件文件中使用以下代码片段

add_action( 'template_redirect', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
    global $post;
    $slug = $post->post_name;
    if($slug == 'sample-page') {
        global $woocommerce;
        $woocommerce->cart->empty_cart();
    }
}
更新

如果您不喜欢硬编码页面段塞,还有一个更好的方法

add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
    if ( isset( $_GET['clear-cart'] ) ) {
        global $woocommerce;
        $woocommerce->cart->empty_cart();
    }
}
在主题的
functions.php
文件中添加上述代码

然后通过在URL中添加
清除购物车
查询字符串重定向到页面&这将清除所有购物车项目

我们可以在任何URL中使用此函数


您需要在wp实例中创建web api,该实例使用此代码清除购物车

global $woocommerce;
$woocommerce->cart->empty_cart();

并在upsell.php文件上调用该api。您甚至可以使用HTTP_REFERER检查用户是否直接点击upsell.php url。

您需要在wp实例中创建web api,该实例使用此代码清除购物车

global $woocommerce;
$woocommerce->cart->empty_cart();

并在upsell.php文件上调用该api。您甚至可以使用HTTP_REFERER检查用户是否直接点击upsell.php url。

谢谢您的回答,根据您的代码,我们将只使用wordpress页面,如何使用特定页面example.com/upsell.php?我试过了,但购物车仍然显示旧产品。@SuriyaKarthikeyan,为什么要使用外部页面显示追加销售产品?您如何在该页面中显示产品列表?我们没有称之为产品详细信息,我们已手动添加产品内容,并通过发送添加到购物车id(example.com/shop/cart/?add to cart=5,12,15)链接到wordpress。感谢您的帮助,我已将所有自定义页面更改为wordpress页面。现在,我可以使用您的第一次更新清除旧购物车项目:)谢谢您的回答,根据您的代码,我们将只使用wordpress页面,如何使用特定页面example.com/upsell.php?我尝试过,但购物车仍然显示旧产品。@SuriyaKarthikeyan,为什么您使用外部页面来显示upsell产品?您如何在该页面中显示产品列表?我们没有称之为产品详细信息,我们已手动添加产品内容,并通过发送添加到购物车id(example.com/shop/cart/?add to cart=5,12,15)链接到wordpress。感谢您的帮助,我已将所有自定义页面更改为wordpress页面。现在我可以使用您的第一次更新清除旧购物车项目了:)我在functions.php文件中添加了以下函数,但是如果($\u SERVER['REQUEST\u URI']=“”){global$woocerce;$woocerce->cart->empty\u cart();}我在functions.php文件中添加了以下函数,则会出现错误(致命错误),但是如果($\u SERVER['REQUEST\u URI']=”){global$woocommerce;$woocommerce->cart->empty\u cart()}我很好奇你为什么要清除购物车?我很好奇你为什么要清除购物车?