Очистить корзину Woocommerce на странице загрузки даже для зарегистрированных пользователей - PullRequest
1 голос
/ 20 марта 2019

Я хочу очистить страницу корзины при загрузке страницы, если эта страница не является корзиной или страницей оформления заказа. Даже для зарегистрированных пользователей и администраторов любая страница затем очищается. Этот код работал, но его больше нет

/**
 * Clears WC Cart on Page Load
 * (Only when not on cart/checkout page)
 */
 
add_action( 'wp_head', 'bryce_clear_cart' );
function bryce_clear_cart() {
if ( wc_get_page_id( 'cart' ) == get_the_ID() || wc_get_page_id( 'checkout' ) == get_the_ID() ) {
    return;
}
WC()->cart->empty_cart( true );
}

Ответы [ 2 ]

1 голос
/ 20 марта 2019

Обновлено и улучшено.

Используйте условные теги Woocommerce и попробуйте вместо этого template_redirect перехватить (когда корзина не пуста) :

add_action( 'template_redirect', 'custom_empty_cart' );
function custom_empty_cart() {
    if ( ! ( is_cart() || is_checkout() ) && ! WC()->cart->is_empty() ) {
        WC()->cart->empty_cart( true );
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).Это должно работать.

0 голосов
/ 21 марта 2019

Это работает нормально, как я уже сказал в комментарии, ваш код не работает, я не знаю, почему я просто отредактировал его так, как он работал , но я не знаю, работает ли он сейчас как условиеработать только в том случае, если корзина не пуста на всех других страницах, кроме корзины и оформления заказа)

    add_action( 'template_redirect', 'custom_empty_cart' );
function custom_empty_cart() {
    if ( ( ! ( is_cart() || is_checkout() ) ) && ! ( WC()->cart->is_empty() ) ) {
        WC()->cart->empty_cart( true );
}
}

Я думаю, что есть проблема с этим ! ( WC()->cart->is_empty() )

Я думаю этоВозможно, функция не работает с оператором "!", мой код выполняется так же, как ваш, но я не знаю, почему ваш нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...