Ошибка / ошибка очистки корзины WooCommerce?

Я столкнулся со странной вещью в WP WooCommerce, и я не могу ни понять, ни исправить это сам.

Дело в том, что я добавил кнопку "Очистить" на своей странице оформления заказа, эта кнопка перенаправляет меня на мою домашнюю страницу и добавляет параметр "Очистить". Затем я проверяю, установлен ли этот параметр, и если он установлен, то корзина очищается;

Код:

if(isset($_POST["clear_cart"]))
{
    header("Location: https://examplepage.com?clear");
}

add_action( 'init', 'woocommerce_clear_cart_url' );

function woocommerce_clear_cart_url() 
{
    global $woocommerce;

    if(isset( $_GET['clear'])) 
    {
         $woocommerce->cart->empty_cart(); 
    }
}

Теперь ошибка / ошибка.

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

Когда я иду и снова добавляю некоторые товары, а затем очищаю корзину, меня снова перенаправляют на домашнюю страницу (первые 4 строки кода), но моя корзина не очищается. Чтобы очистить его, я должен изменить свой параметр на что-то вроде

?clear=true

Затем я делаю то же самое, и после нажатия кнопки "Очистить корзину" он снова перенаправляет меня, и корзина не очищается. Если я снова изменю параметр на

?clear=true

в этот раз это не сработало, потому что раньше это работало. Изменение параметра на

?clear=true1

очищает корзину

Я надеюсь, вы уже поняли, о чем я говорю. Я пробовал разные параметры вместо "очистить", и каждый раз происходит одно и то же.

Когда я также попытался повторить что-то внутри

function woocommerce_clear_cart_url() 

это также сработало только один раз. У меня нет идей.

Спасибо.

2 ответа

Решение

Попробуйте код ниже

add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
  global $woocommerce;
  if(isset($_POST["clear_cart"]))
  {
    $data= $woocommerce->cart->empty_cart(); 
    if(is_null($data) == 1 ){
     wp_redirect( site_url() ); 
     exit; 
  }
}

Предполагая, что ваш HTML-код выглядит примерно так:

<form method="post">
 <input type="submit" name="clear_cart" value="1"> 
</form>

Вы должны попробовать этот код для вашей ошибки.

add_action("template_redirect", 'e_coding_hub_redirection_function');

function e_coding_hub_redirection_function(){

global $woocommerce;
    if( is_cart() && WC()->cart->cart_contents_count == 0){
        //wp_safe_redirect( get_permalink( woocommerce_get_page_id( 'shop' ) ) );
        wp_redirect( site_url() );
    }
}
Другие вопросы по тегам