我得到了这个代码(清除购物车),它对于登录用户来说工作得很好,但对于访客来说则不然,对于访客来说,我必须离开结帐页面并加载另一个页面来清除购物车,您能帮我一下吗?这样每个人都可以得到同样的结果,谢谢。
这是代码,我从 Stack overlow 获得它:
//we inserted a script in wordpress and put it in the head
add_action( 'wp_head', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
//we used the jquery beforeunload function to detect if the user leaves that page
?>
<script>
jQuery(document).ready(function($) {
$(window).bind('beforeunload', function() {
//Used WordPress to help jQuery determine the page we're targeting
//pageID is the page number of the page we're targeting
<?php if(!is_page(pageID)):
//empty the cart
$woocommerce->cart->empty_cart(); ?>
<?php endif; ?>
});
});
</script>
<?php } ?>
为此你可以通过纯php代码尝试一下。在此您需要
template_redirect
钩子。
在function.php
中添加以下代码<?php
add_filter('template_redirect', function () {
if (!is_checkout() && !WC()->cart->is_empty()) {
WC()->cart->empty_cart();
}
});
注意:一旦产品添加到购物车,请确保您已完成快速结帐,直接将其发送到结帐页面。所以这可能更有意义。