Nano Hash - криптовалюты, майнинг, программирование

Корзина Woocommerce не очищается при успешной оплате

У меня проблема с тем, что WooCommerce не очищает корзину после перенаправления с платежного шлюза - Payfast. Товары по-прежнему остаются в корзине, пока страница не обновится.

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

//Force Clear Cart
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;

if ( is_page( array( 'thank-you', 'checkout', 'order-received' ) ) && isset( $_GET['empty-cart'] ) ) { 
    $woocommerce->cart->empty_cart(); 
}
} 

add_action( 'woocommerce_thankyou', 'order_received_empty_cart_action', 10, 
1 );
function order_received_empty_cart_action( $order_id ){
WC()->cart->empty_cart();
}

Но, похоже, это не работает как отступ.

13.02.2018

  • Попробуйте выполнить те же функции на простой странице, когда у вас есть что-то в корзине: тогда они работают? 13.02.2018

Ответы:


1

Функция order_received_empty_cart_action() обычно запускается ниже по странице, после того как пункт меню корзины уже загружен. Таким образом, вы видите очистку корзины только при загрузке следующей страницы.

Затем woocommerce_clear_cart_url() выполняется в действии init, обычно WP_Query для страницы еще не запущен, поэтому is_page() вернет false, так как еще не знает, что это за страница. Если вы запустите это на wp_head(), все будет хорошо.

Вот комбинированное решение

<?php
add_action( 'wp_head', 'my_clear_cart' );
function my_clear_cart() {
	if ( is_page( array( 'thank-you', 'order-received' ) ) && isset( $_GET['order-received'] ) ) {
		WC()->cart->empty_cart();
	}
}

14.02.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..