• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Очистка корзины

Image CMS

todayz

Новичок
#1
Доброго времени суток. Я уже второй день ковыряюсь с тем, как мне в страницу Checkout добавить кнопочку с возможностью очистки корзины.

Грубо говоря на странице должна быть кнопочка "очистить корзину". При нажатии на которую будет вызываться функция wc_empty_cart(); выводится сообщение о том, что заказ отменён и через несколько секунд редирект на главную страницу сайта.

Ссылку я добавил в файл form-billing.php. Но никак не пойму как вызвать нужную мне функцию при нажатии на a href ссылку.

Помогите пожалуйста разобраться.
 

D&B

Администратор
Команда форума
Местный
#2
Там же есть значок удаления товара после чего появляется кнопка Вернуться в магазин.
 

todayz

Новичок
#3
Мне не нужно чтобы человек видел всё наименование магазина. Товары вообще скрыты от посетителей. А добавляются в корзину при помощи примых ссылок типа "shop/?add-to-cart=1436". Поэтому интересует именно такая функция, как я описал. Чтобы не дать посетителю вернуться в корзину или посмотреть весь шоп целиком.
 

todayz

Новичок
#4
Нашёл вот такое вот решение, но оно не работает (((

В functions.php темы добавил

// check for empty-cart get param to clear the cart
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if ( isset( $_GET['empty-cart'] ) ) {
$woocommerce->cart->empty_cart();
}
}

а в form-billing.php.

<a class="button" href="<?php echo $woocommerce->cart->get_cart_url(); ?>?empty-cart"><?php _e( 'Empty Cart', 'woocommerce' ); ?></a>

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

birkinmax

Форумчанин
#5
Нашёл вот такое вот решение, но оно не работает (((

В functions.php темы добавил

// check for empty-cart get param to clear the cart
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if ( isset( $_GET['empty-cart'] ) ) {
$woocommerce->cart->empty_cart();
}
}

а в form-billing.php.

<a class="button" href="<?php echo $woocommerce->cart->get_cart_url(); ?>?empty-cart"><?php _e( 'Empty Cart', 'woocommerce' ); ?></a>

Но страница грузится не полностью, и я так понимаю грузится ровно до кода ссылки. Может где-то с синтаксисом что-то не так. Не могу никак понять ((
Вы нашли решение этого вопроса? Для меня это тоже актуально. Тоже не могу найти код кнопки
 

todayz

Новичок
#6
Вы нашли решение этого вопроса? Для меня это тоже актуально. Тоже не могу найти код кнопки
на самом деле нашёл.

В файл wp-content/plugins/woocommerce/templates/checkout/form-billing.php

добавил следующий код:

<?php
echo "<a class=\"button\" href=\"'.$woocommerce->cart->get_cart_url().'?empty-cart\">Отменить заказ</a>";
?>

а в functions.php тему добавил вот такую конструкцию:

// check for empty-cart get param to clear the cart

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

if ( isset( $_GET['empty-cart'] ) ) {
$woocommerce->cart->empty_cart();
wp_redirect('http://MYSITE.RU/корзина_пуста/'); exit;
}
}

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

birkinmax

Форумчанин
#7
на самом деле нашёл.

В файл wp-content/plugins/woocommerce/templates/checkout/form-billing.php

добавил следующий код:

<?php
echo "<a class=\"button\" href=\"'.$woocommerce->cart->get_cart_url().'?empty-cart\">Отменить заказ</a>";
?>

а в functions.php тему добавил вот такую конструкцию:

// check for empty-cart get param to clear the cart

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

if ( isset( $_GET['empty-cart'] ) ) {
$woocommerce->cart->empty_cart();
wp_redirect('http://MYSITE.RU/корзина_пуста/'); exit;
}
}

wp_redirect делать в принципе не обязательно, просто когда корзина опустошается, то ничего на экран не выводится. Поэтому я создал отдельную страницу, чтобы показать посетителю, что корзина действительно опустошилась.
Спасибо большое!
 

Stork.71

Гуру
Местный
#8
На будущее просьба к топикстартеру:
Если это не сложно, после того, как нашли решение, не поленитесь потратить пару минут и выложить его здесь. Это может помочь кому-то ;)
 

Solomon Fox

Форумчанин
#9
У меня такой же вопрос, нашел код который при переходе на определенную страницу очищает корзину
Код:
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() меняем на is_page() указываем ID страницы и все. Но не работает, кто сталкивался?
 

searchingman

Гуру
Местный
#10
У меня такой же вопрос, нашел код который при переходе на определенную страницу очищает корзину
Код:
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() меняем на is_page() указываем ID страницы и все. Но не работает, кто сталкивался?
Данный код очистит главную только в том случае , если у нее задан GET-параметр 'empty-cart'. Он у Вас задается при переходе в URL главной страницы?
 

Solomon Fox

Форумчанин
#11
Спасибо за ответ. Видимо нет, подскажете где и как это можно прописать этот параметр для страницы?
 

searchingman

Гуру
Местный
#12
Спасибо за ответ. Видимо нет, подскажете где и как это можно прописать этот параметр для страницы?
Не проще его просто убрать из приведенного вами кода, если он Вам не нужен?
Тогда при любом переходе на главную будет очищаться корзина.
 

Solomon Fox

Форумчанин
#13
$_GET['empty-cart'] ) вот нашел. Я так предполагаю вместо него можно другое условие прописать Что-то типо
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;

if ( is_page(IDстраницы) == isset( is_page(IDстраницы-благодарности при переходе на которую очистка) ) {
$woocommerce->cart->empty_cart();
}
}
Правильно?
 
Сверху Снизу