Перенаправить со страницы корзины на страницу магазина, если в корзине нет товаров

Я использую плагин Woocommerce и CMS WordPress. Мне нужно чтобы когда из корзины пользователь удалил товар - страница перезагрузилась. У меня в functions.php есть код который перенаправляет пользователя на страницу магазина (shop) если в корзине нет товаров, но он работает только если страница перезагрузилась или пользователь кликнул на иконку корзины когда она пустая. Вот этот код -- >

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

В идеале хорошо бы было если после ajax запроса было сделано перенаправление, если корзина пустая, а не после перезагрузки. Зарание спасибо!


Ответы (1 шт):

Автор решения: Darth KYL

у wc есть js ивенты которые тригерятся после определенных событий, в вашем случае нужен ивент которые тригерится после того как из корзины удален последний товар wc_cart_emptied используя этот ивент вы можете перенаправить пользователя на страницу магазина js

jQuery( function($){
    jQuery( document.body ).on( 'wc_cart_emptied', function(){
        console.log('test');
        // window.location = '/shop';
    } );
} );

так же я бы заменил вашу версию редиректа через php на эту

add_action( 'template_redirect', 'cart_empty_redirect_to_shop' );
function cart_empty_redirect_to_shop(){
    if( WC()->cart->is_empty() && is_cart() ) {
        wp_safe_redirect( wc_get_page_permalink( 'shop' ) );
        exit;
    }
}
→ Ссылка