2015-03-03 4 views
0

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

Любые идеи о том, где сделать цикл? Я имею в виду, какое действие/крючок я должен изменить?

EDIT

Я попытался следующие крючки с модифицированным кодом Rohil, что он предоставил в качестве ответа. Но только один раз он работает:

  • woocommerce_checkout_update_order_review
  • woocommerce_review_order_before_submit

Я имею в виду, я хочу, проверка должна быть выполнена после доставки деталей вводится и пользователь нажимает на кнопку «Сделать заказ». Поэтому сначала он проверяет и отображает уведомление. Но если снова нажать кнопку PLACE ORDER без внесения каких-либо изменений, заказ будет размещен!

ответ

2

Это вы что искали?

Добавить следующий код в new WordPress plugin или к site-specific snippets plugin:

add_action('woocommerce_check_cart_items', 'validate_all_cart_contents'); 

function validate_all_cart_contents(){ 
    foreach (WC()->cart->cart_contents as $cart_content_product) { 

     $shipping_class = $cart_content_product['data']->get_shipping_class(); 
     if($shipping_class == 'your_shipping_class_name'): 
      return true; 
     else: 
      wc_add_notice(sprintf('<strong>You need to purchase products from the same shipping class</strong>'), 'error'); 
     endif; 
    } 
} 

Позвольте мне знать, если у вас есть сомнения.

+0

спасибо. Он отлично работает. Но могу ли я спросить вас, что будет изменять действие, если я хочу сделать эту проверку после того, как пользователь вводит адрес доставки? Я хочу сказать, что хочу сделать проверку после того, как пользователь вводит адрес доставки. Поэтому во время проверки будет выбрана страна, введенная пользователем для адреса доставки, и будет проверена вместе с именем класса. Есть идеи? –

+0

Ничего. Нашел это: 'woocommerce_checkout_update_order_review' –

+0

@Rohil_PHPBeginner while functions.php - это, наверное, самое легкое место для сброса кода, это не идеальный вариант. Functions.php должен быть им/внешним видом, и что-то вроде этого должно быть его собственным плагином. – helgatheviking

Смежные вопросы