【问题标题】:Redirect to shop if cart is emptied on cart page in WooCommerce 3+如果购物车在 WooCommerce 3+ 的购物车页面上清空,则重定向到商店
【发布时间】:2021-04-27 10:32:18
【问题描述】:

在 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' );

此代码仅在购物车为空并且我尝试进入购物车页面时才有效。但是,如果我已经在购物车页面上并且我删除了所有购物车项目,我必须重新加载页面才能重定向。所以我想我必须在代码中添加一些东西来重新加载页面。有什么想法吗?

如果有人能帮我解决这个问题,我将不胜感激。

【问题讨论】:

    标签: php jquery wordpress redirect woocommerce


    【解决方案1】:

    自 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 版本中测试并运行。

    【讨论】:

    • 成功了!非常感谢您的帮助!
    猜你喜欢
    • 2014-08-09
    • 1970-01-01
    • 2020-11-15
    • 2018-08-29
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    相关资源
    最近更新 更多