我想知道如何使用woocommerce清除页面加载中购物车的内容。
我通过将其添加到functions.php
来解决如何添加清除购物车按钮的问题add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if ( isset( $_GET['empty-cart'] ) ) {
$woocommerce->cart->empty_cart();
}
}
但是我想知道如何在主页的页面加载中触发这个(如果你可以指定那个很棒的页面,但即使主页也很有用)
有什么想法吗?谢谢!
答案 0 :(得分:16)
仅在首页触发时,您的功能需要如下所示:
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if ( is_front_page() && isset( $_GET['empty-cart'] ) ) {
$woocommerce->cart->empty_cart();
}
}
function is_front_page()仅在wordpress网站的首页上返回true。此外,您可能会检测到具有函数is_page()的任何其他页面,您可以在其中传递任何页面标题,ID或slug
答案 1 :(得分:12)
其更新版本为:
WC()->cart->empty_cart();
答案 2 :(得分:2)
试试这个。我希望它会对你有所帮助。
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if (strpos($_SERVER['REQUEST_URI'], '/checkout') < 0 )
{
$woocommerce->cart->empty_cart();
}
}
答案 3 :(得分:1)
以上所有代码都不适用于我的Wordpress安装(4.9.6)。所以,我更改了add_action并删除了变量请求并直接运行。
现在,我的Woocommerce插件会在用户退出结帐页面时清除产品,而不会出现任何重复错误。谢谢大家的帮助
add_action( 'woocommerce_add_cart_item_data', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
$woocommerce->cart->empty_cart();
}
答案 4 :(得分:0)
如果您需要购物车页面上的空购物车按钮,您可以使用以下插件清除购物车
插件名称:WooCommerce的空购物车按钮 链接:https://wordpress.org/plugins/woo-empty-cart-button/
不需要任何设置只需激活插件。
答案 5 :(得分:0)
以上对我没有用,所以我需要一些不依赖于WordPress条件的东西:
/*empty cart if user come to homepage*/
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if ($_SERVER['REQUEST_URI'] === '/') {
$woocommerce->cart->empty_cart();
}
}
答案 6 :(得分:0)
您可以简单地调用此WooCommerce核心功能:
wc_empty_cart()
谢谢
答案 7 :(得分:0)
以上代码均未在我的网站上运行。我在最新的WordPress版本5.4.1中对其进行了测试,以下功能可以完美运行!
/**
Clears WC Cart on Page Load
(Only when not on cart/checkout page)
*/
add_action( 'wp_head', 'wc_clear_cart' );
function wc_clear_cart() {
if ( wc_get_page_id( 'cart' ) == get_the_ID() || wc_get_page_id( 'checkout' ) == get_the_ID() ) {
return;
}
WC()->cart->empty_cart( true );
}