2017-01-20 6 views
1

Мой веб-магазин WooCommerce выполнен из многостадийного процесса добавления в корзину, что добавляет бесплатный товар в корзину, когда шаг пропускается.Удаление определенных продуктов со страницы и страницы оформления покупок

Таким образом, я хотел бы удалить эти бесплатные товары из корзины на странице проверки, как только процесс выбора будет выполнен, и клиент будет платить свой заказ.

Я знаю, что я должен использовать метод WC_Cart remove_cart_item($cart_item_key) в некотором крюке. На данный момент я пробовал некоторые крючки без успеха.

Мои бесплатные продукты идентификаторами:

$free_products_ids = array(10,52,63,85); 

Как я могу добиться этого?

Благодаря

ответ

1

Для удаления корзины товаров на корзине и оформление заказа странице, я использую пользовательский крючковатую функцию в корзине и проверок страниц крючков, так:

add_action('woocommerce_before_cart', 'removing_the_free_cart_items'); 
add_action('woocommerce_before_checkout_form', 'removing_the_free_cart_items'); 
function removing_the_free_cart_items() { 

    if (!WC()->cart->is_empty()): 

     // Here your free products IDs 
     $free_products = array(10,52,63,85); 

     // iterating throught each cart item 
     foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item){ 

      $cart_item_id = $cart_item['data']->id; 

      // If free product is in cart, it's removed 
      if(in_array($cart_item_id, $free_products)) 
       WC()->cart->remove_cart_item($cart_item_key); 
     } 

    endif; 
} 

Этот код идет в function.php файл вашей активной дочерней темы (или темы), а также в любом файле плагина.

Этот код проверен и работает.

+0

Спасибо @LoicTheAztec – mysticalghoul