• Как написать условие для товаров в определенной категории Woocommerce?

    $cats = array(91,22)
    if ( has_term($cats, 'product_cat', $product_id ) ) {
        // выводим что нужно
    }
    Ответ написан
    Комментировать
  • Как вывести название категорий в карточке товара структурно?

    Да, Код который Вы показали, и выводит Вам винегрет. И в этот винегрет входят все категории, к которым подключен Ваш пост (товар).
    Я думаю, что для получения структуры Вам необходимо выстроить иерархию для каждой категории. Причем, может случиться так, что Ваш товар включен в родительскую категорию, в категорию потомка(3е колено), а в дочернюю не включен. Тогда получается нужно исключать отсутствующую дочернюю категорию из структуры.

    Например собрать иерархию можно так
    /**
    * Собирает родословную в строку [предок-родитель-потомок] или
    * в массив ([0]=>предок,[1]=>родитель,[2]=>потомок) проверяя наличие id
    * @param array $ids - массив типа id=>parent_id, на основании которого
    * 						собирается родословная
    * @param number $id - для кого строится родостловная, он же потомок
    * @param string $divider - символ разделитель, если пусто cобирать в массив
    * @return
    */
    function create_hierarchical_path($ids, $id, $divider = ''){
    	if ('' !== $divider){	//собираем строку
    		$result = $id;
    		while(isset($ids[$id]) && $ids[$id] != 0){
    			$result = $ids[$id].$divider.$result;
    			$id = $ids[$id];
    		}
    	}
    	else {					// собираем массив
    		$result = array();
    		array_push ($result, $id);
    		while(isset($ids[$id]) && $ids[$id] != 0){
    			$id = $ids[$id];
    			array_push ($result, $id);
    		}
    		$result = array_reverse($result);
    	}
    	return $result;
    }
    Получить список всех категорий можно так
    $args = array(
    		'taxonomy'=>'product_cat',
    		'hide_empty'=>0,
    		'fields'=>'id=>parent'	);
    	// получаем список всех категорий
    	$ids = get_terms('product_cat', $args);

    Теперь имея родословную и список всех категорий можно составить необходимую Вам структуру
    Ответ написан
    2 комментария