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

Sur*_*yan 1 php wordpress woocommerce hook-woocommerce

我有 woocommerce 商店,例如:example.com/store/

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

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

每当您访问追加销售页面时,我们都需要清除购物车会话。

如何从追加销售页面清除购物车会话?

Sar*_*l N 5

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

在自定义功能中,检查当前页面标题,然后根据我们的条件清除购物车。

在您的主题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();
    }
}
Run Code Online (Sandbox Code Playgroud)

更新

如果您不喜欢对 page slug 进行硬编码,还有一个更好的方法。

add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
    if ( isset( $_GET['clear-cart'] ) ) {
        global $woocommerce;
        $woocommerce->cart->empty_cart();
    }
}
Run Code Online (Sandbox Code Playgroud)

将上述代码添加到主题functions.php文件中。

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

我们可以在任何 URL 中使用这个函数。

http://example.com?clear-cart

或者

http://example.com/sample-page/?clear-cart