Как очистить корзину Woocommerce

Мне интересно, как вы можете очистить содержимое своей корзины при загрузке страницы с помощью woocommerce.

Я понял, как добавить кнопку четкой корзины, добавив ее в функции functions.php

add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
  global $woocommerce;

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

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

Любые идеи? Спасибо!

Ответ 1

Для запуска только на первой странице ваша функция должна выглядеть так:

add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
  global $woocommerce;

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

Функция is_front_page() возвращает true только на первой странице вашего сайта wordpress. Кроме того, вы можете обнаружить любую другую страницу с функцией is_page(), где вы можете передать любой заголовок страницы, идентификатор или слизню

Ответ 2

Обновленная версия этого будет:

WC()->cart->empty_cart();

Ответ 3

Попробуйте это. Надеюсь, это поможет вам.

add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
  global $woocommerce;

  if (strpos($_SERVER['REQUEST_URI'], '/checkout')  <  0 ) 
  {
         $woocommerce->cart->empty_cart();
  }
}

Ответ 4

Ни один из приведенных выше кодов не работал на моей установке Wordpress (4.9.6). Итак, я изменил add_action и удалил запрос переменной и сразу перешел к выполнению.

Теперь мой плагин Woocommerce очищает продукты от корзины, когда пользователь выходит из страницы оформления заказа без повторяющихся ошибок. Спасибо всем за вашу помощь

add_action( 'woocommerce_add_cart_item_data', 'woocommerce_clear_cart_url' );

function woocommerce_clear_cart_url() {

    global $woocommerce;
    $woocommerce->cart->empty_cart();
} 

Ответ 5

Вы можете просто назвать это основными функциями WooCommerce:

WC()->cart->empty_cart();

Чтобы очистить сессию корзины:

WC()->session->set('cart', array());

Спасибо

Ответ 6

Если вам нужна пустая тележка на странице корзины, вы можете использовать ниже плагин для очистки корзины.

Название плагина: пустая кнопка корзины для WooCommerce Ссылка: https://wordpress.org/plugins/woo-empty-cart-button/

Никаких настроек не требуется, просто активируйте плагин.

Ответ 7

выше не работало для меня, поэтому мне нужно что-то, что не зависит от условия WordPress:

/*empty cart if user come to homepage*/
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;

if ($_SERVER['REQUEST_URI'] === '/') { 
    $woocommerce->cart->empty_cart(); 
 }
}