Как очистить корзину woocommerce при посещении определенной страницы (за пределами WordPress) пользовательской страницы PHP - PullRequest
0 голосов
/ 31 мая 2018

У меня есть магазин woocommerce, например: example.com/store/

И я создаю страницу продажи некоторых продуктов вне WordPress: example.com/upsell.php

Теперь я хочу очистить корзину, как только вы посетите example.com/upsell.php, потому что у нас есть несколько шагов в upsell, и, наконец, мы отправляем URL-запрос для добавления продуктов в корзину (example.com/store/cart /? add-to-cart = 1,5,8).

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

Как очистить сеанс корзины со страницы перепродажи?

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Вам нужно добавить действие, которое будет очищать элементы корзины в перехватчике перенаправления шаблона.

В пользовательской функции, проверить слаг текущей страницы и затем очистить корзину согласно нашему условию.

Используйте приведенный ниже фрагмент кода в functions.php или файле пользовательского плагина вашей темы.

add_action( 'template_redirect', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
    global $post;
    $slug = $post->post_name;
    if($slug == 'sample-page') {
        global $woocommerce;
        $woocommerce->cart->empty_cart();
    }
}

Обновление

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

add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
    if ( isset( $_GET['clear-cart'] ) ) {
        global $woocommerce;
        $woocommerce->cart->empty_cart();
    }
}

Добавьте указанный выше код в файл functions.php вашей темы.

Затем перенаправьте на страницу, добавив в свой URL-адрес строку запроса clear-cartи это очистит все элементы корзины.

Мы можем использовать эту функцию в любом URL.

http://example.com? Clear-cart

или

http://example.com/sample-page/?clear-cart

0 голосов
/ 31 мая 2018

вам нужно создать веб-API в экземпляре wp, который очищает корзину с помощью этого кода

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

и вызвать этот API в файле upsell.php.Вы даже можете использовать HTTP_REFERER, чтобы проверить, попал ли пользователь непосредственно в URL upsell.php или нет.

0 голосов
/ 31 мая 2018

Я бы использовал $ _SERVER ['REQUEST_URI'], чтобы получить текущий URL страницы, чтобы вы могли проверить, находитесь ли вы на странице перепродажи.

Вам потребуется использовать следующую функциюочистить корзину

global $woocommerce;
$woocommerce->cart->empty_cart();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...