Перенаправить со страницы корзины на страницу магазина, если в корзине нет товаров
Я использую плагин 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 шт):
у 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;
}
}