2016-01-13 2 views
3

Я строю свою электронную коммерцию для продажи вина с wordpress 4.2.2 и woocommerce 2.3.11. Я создал пользовательскую функцию для завершения заказа только с бутылками на несколько из 6. До этого у меня нет никаких проблем, но у меня есть 2 категории с пакетами из 6 бутылок, поэтому я хочу избежать того, что эти 2 категории будут кол-во в общем количестве товаров. Я не эксперт по php, поэтому я пытаюсь создать функцию, которая проверяет, находится ли каждый элемент внутри категории и относится ли она к одной категории пакетов, вычтите один элемент. Эта работа хороша только в том случае, если есть один элемент из этих 2 категорий, но если я добавлю 2 пакета на тележку, только один будет вычитаться.удалять продукты категории из общего количества корзины woocommerce

add_action('woocommerce_check_cart_items', 'woocommerce_check_cart_quantities'); 
function woocommerce_check_cart_quantities() { 
$total_products = WC()->cart->cart_contents_count; 
$multiples = 6; 
foreach (WC()->cart->get_cart() as $cart_item_key => $values) { 
    $prodotti = $values['data']; 
    $terms = get_the_terms ($prodotti->id, 'product_cat'); 
    foreach ($terms as $term){ 
     $categoria = $term->term_id; 
    } 

    if (($categoria == 169) || ($categoria == 152)) { 
      $pacchetti = $values ['quantity']; 
      $totale = ($total_products-$pacchetti); 
    } else { 
     $totale = $total_products; 
    } 
} 
echo $totale; 
if (($totale % $multiples) > 0) 
    wc_add_notice(sprintf(__('You need to buy in quantities of 6 products', 'woocommerce'), $multiples), 'error'); 

}  

Желаемая Counting:

Screen 1 - Right Counting

Существующие Counting

Screen 2 - Wrong counting

Я открыт для любого решения для макияжа это работает.

Большое вам спасибо!

+0

Я должен буду думать об этом больше, но что об использовании [Связка продукта] (https://www.woothemes.com/products/product-bundles/) для элементов, которые должны быть проданы в пакеты из 6? – helgatheviking

+0

Привет снова :). Пакеты продуктов dosen't работают вообще :(, а также с вашей помощью. Я также нанимаю внештатного сотрудника, но без успеха. Поэтому я отказался от идеи использовать его, и я много работаю, чтобы найти другое решение с сегодняшнего дня с кодом выше – Wolftrick

+0

Почему продукты не работают? Основываясь на вашем описании, это похоже на ваш прецедент. И, к сожалению, вы не всегда можете нанять хорошего фрилансера. Это случилось со мной и раньше. Для проектов, специфичных для WooCommerce, вы, вероятно, сделайте так, чтобы нанять [Woo Expert] (https://www.woothemes.com/experts/). – helgatheviking

ответ

2

Ваш код выглядит очень хорошо для меня. Я думаю, что одна вещь, которую вам не хватает, это функция has_term(), чтобы более надежно проверить, какие продукты находятся в ваших двух специальных категориях.

add_action('woocommerce_check_cart_items', 'woocommerce_check_cart_quantities'); 
function woocommerce_check_cart_quantities() { 
    $total_products = WC()->cart->cart_contents_count; 
    $multiples = 6; 
    $totale = 0; 
    foreach (WC()->cart->get_cart() as $cart_item_key => $values) { 
     $prodotti = $values['data']; 

     if(! has_term(array(169, 152), 'product_cat', $prodotti->id)){ 
      $totale += $values['quantity']; 
     } 

    } 
    echo $totale; 
    if (($totale % $multiples) > 0){ 
     wc_add_notice(sprintf(__('You need to buy in multiples of %d products', 'your-textdomain'), $multiples), 'error'); 
    } 

} 
+0

УДИВИТЕЛЬНО! Это отлично работает! Поскольку вы спасете мою жизнь сегодня вечером, я куплю вам маргарита :) Если я могу спросить ... почему мой код не работает? (Я хочу учиться столько, сколько смогу) – Wolftrick

+0

Отлично! Не забывайте отмечать это как принятый ответ. И спасибо вам за эту маргариту. Если бы мне пришлось угадать, почему ваш код не работал, я думаю, что это может быть цикл foreach().Если ваш продукт находится в нескольких категориях, тогда '$ categoria = $ term-> term_id;' является произвольно любой последней категорией в '$ terms'. И это сделает ваш оператор if() 'ненадежным. – helgatheviking

+0

ahhh ok ok понимаю! Еще раз спасибо – Wolftrick

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