2015-06-09 3 views
0

Мой клиент хочет, чтобы чек был «обтекаемым», чтобы пропустить страницу с тележкой и пойти прямо, чтобы проверить один продукт за раз. Я получил это покрытие, но мне также необходимо автоматически опорожнить корзину, если клиент решает не подтверждать оформление заказа.Определите, находится ли на странице магазина в woocommerce

Для этого я хотел проверить, нет ли я на какой-либо другой странице, кроме тележки или кассы, и делаю это там, но все команды, которые я пробовал (is_shop(), is_front_page(), is_page ('Shop'), is_product(), is_home()) всегда возвращает false, поэтому я не уверен, что с этим делать. Вот как я это делаю (в моих тезисах functions.php):

function reset_cart_front() { 
    global $woocommerce; 
    echo "Attempting to empty<br>"; 

    if (is_shop()) { 
     echo "is right page<br>"; 
     $woocommerce->cart->empty_cart(); 
    } else { 
     echo "is not right<br>"; 
    } 

} 
add_action('init', 'reset_cart_front'); 

Что дает?

+1

'init' слишком рано для выполнения каких-либо условных логических тестов, таких как' is_shop() ', поскольку параметры запроса еще не настроены. – helgatheviking

ответ

0

Ничего, я понял это!

function reset_cart_shop_loop() { 
    global $woocommerce; 
    $woocommerce->cart->empty_cart(); 
} 
add_action('woocommerce_before_shop_loop', 'reset_cart_shop_loop'); 
0

Поправьте меня, если я ошибаюсь ... но я думаю, что вы должны проверить, если на текущей странице is_checkout() и слейте тележку, если это не так:

function reset_cart_front() { 
    global $woocommerce; 

    if (!is_checkout()) { 
     $woocommerce->cart->empty_cart(); 
    } 

} 
add_action('template_redirect', 'reset_cart_front'); 

Я также думаю, что 'init' слишком рано зацепить (и рекомендовал бы попробовать 'template_redirect').

Смежные вопросы