在 WooCommerce 中,我想在购物车为空时从购物车重定向到商店页面,并且我正在使用此代码:
function cart_empty_redirect_to_shop(){
global $woocommerce;
if ( is_page('cart') and !sizeof($woocommerce->cart->cart_contents) ) {
wp_redirect( get_permalink( wc_get_page_id( 'shop' ) ) ); exit;
}
}
add_action( 'wp_head', 'cart_empty_redirect_to_shop' );
此代码仅在购物车为空并且我尝试进入购物车页面时才有效。但是如果我已经在购物车页面上并且我删除了所有购物车项目,我必须重新加载页面才能重定向。所以我想我必须在代码中添加一些东西来重新加载页面。有什么想法吗?
如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:0)
自 WooCommerce 版本 3 以来,您的代码有点过时。现在在购物车页面上,PHP 重定向没有用,因为 清空购物车 是 Ajax 客户实时事件。因此,在这种情况下,需要 Javascript (jQuery)。
改用以下内容,处理所有情况:
add_action( 'template_redirect', 'empty_cart_redirection' );
function empty_cart_redirection(){
if( is_cart() ) :
// Here set the Url redirection
$url_redirection = get_permalink( wc_get_page_id( 'shop' ) );
// When trying to access cart page if cart is already empty
if( WC()->cart->is_empty() ){
wp_safe_redirect( $url_redirection );
exit();
}
// When emptying cart on cart page
wc_enqueue_js( "jQuery(function($){
$(document.body).on( 'wc_cart_emptied', function(){
if ( $( '.woocommerce-cart-form' ).length === 0 ) {
$(window.location).attr('href', '" . $url_redirection . "');
return;
}
});
});" );
endif;
}
代码位于活动子主题(或活动主题)的functions.php 文件中。自第 3 版以来,已在所有 WooCommerce 版本中进行测试和工作。