Проверка продуктов в корзине по названию категории woocommerce?

Я пытаюсь вызвать выражение эха, если определенная категория продукта находится в моей корзине, вот мой код:

<?php //Check to see if user has product in cart global $woocommerce; //flag no book in cart $item_in_cart = false; foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) { $_product = $values['data']; $terms = get_the_terms( $_product->id, 'product_cat' ); foreach ($terms as $term) { $_categoryid = $term->term_id; } if ( $_categoryid == 'name_of_category' ) { //book is in cart! $item_in_cart = true; } } if ($item_in_cart === true) {echo 'YES';} else {echo 'Nope!';} ?> 

Любая идея относительно того, что я делаю неправильно? У меня есть продукты 'name_of_category' в моей корзине, мне бы понравилось, да, эхом!

Благодаря!

Solutions Collecting From Web of "Проверка продуктов в корзине по названию категории woocommerce?"

Отредактировал мой код, следуя советам Баррелла и эхо «Бинго»!

Работает как шарм, вот код:

  function check_product_in_cart() { //Check to see if user has product in cart global $woocommerce; //assigns a default negative value // categories targeted 17, 18, 19 $product_in_cart = false; // start of the loop that fetches the cart items foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) { $_product = $values['data']; $terms = get_the_terms( $_product->id, 'product_cat' ); // second level loop search, in case some items have several categories foreach ($terms as $term) { $_categoryid = $term->term_id; if (( $_categoryid === 17 ) || ( $_categoryid === 18 ) || ( $_categoryid === 19 )) { //category is in cart! $product_in_cart = true; } } } return $product_in_cart; } 

Надеюсь, что это поможет кому-то!

@Guillaume и другие, которые помогли – спасибо, что разместили это для меня, были полезны для меня. Как только я начал тестировать, я понял, что код не работает для всех моих продуктов. Некоторые продукты в моем случае имеют категории с подкатегориями, и это мешает коду собирать соответствующие категории для всех продуктов. Я немного изменил ваш код, чтобы создать массив, и, похоже, он работает хорошо:

 function check_product_in_cart() { //Check to see if user has product in cart global $woocommerce; // start of the loop that fetches the cart items foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) { $_product = $values['data']; $terms = get_the_terms( $_product->id, 'product_cat' ); // second level loop search, in case some items have several categories // this is where I started editing Guillaume's code $cat_ids = array(); foreach ($terms as $term) { $cat_ids[] = $term->term_id; } if(in_array(434, (array)$cat_ids) || in_array(435, (array)$cat_ids)) { //category is in cart! $product_in_cart = true; } } return $product_in_cart; }