Вывод постов произвольного типа из рубрики произвольной таксономии

Давайте рассмотрим случай, где нам это может понадобиться. Например, каталог товаров, это и будет наш произвольный тип постов, но нам понадобится создать произвольные таксономии для него, т.к. у нас есть категории товаров(например настенные часы, наручные часы), и при этом у каждой из этих категорий есть свои подкатегории (например, стоимость до 5000 рублей и свыше 5000 рублей). И нам все нужно вывести отдельно! Как же это сделать, а именно вывод рубрик произвольной таксономии.

1) Создаем таксономию в CPT UI (Картинка с поясняющим комментарием)

2) Создаем шаблон taxonomy.php (Картинка с поясняющим комментарием)

3) Получаем текущую таксономию, в которой мы находимся(например, мы на странице настенных часов)

 <?php $the_tax = get_taxonomy( get_query_var( 'taxonomy' ) ); ?>

4) Теперь получим ИМЯ нашей текущей рубрики

<?php $cat_name = get_category(get_query_var('cat'))->name;
$cat_name = single_cat_title( '', false ); ?>

5) Для визуальной части мы сделали все(теперь можно вывести label нашей таксономии и рубрики). Однако этого мало, чтобы вывести посты нам понадобится slug как рубрики так и таксономии

6) Получаем список всех рубрик таксономии по ее слагу

<?php $all = get_terms($the_tax->name); ?>

7) Теперь пройдемся по списку всех рубрик(чтобы их вывести в навигации, например) при помощи конструкции foreach, но нам до него нам необходимо объявить переменную $this_term, она нам понадобится.

<?php
	foreach($all as $all_item)
	{ 

		$link = get_term_link($all_item->slug,$the_tax->name); //Получим permalink текущей рубрики

		if ($all_item->name == $cat_name)//Если во время прохода мы наткнулись на текущую рубрику
		{ 
                        //Записываем ее слаг в нашу переменную про которую я говорил
			$this_term = $op_item->slug; 
			//Вывод навигации( в данном случае активного элемента) ?>	
			<a class="active" href="<?php echo $link; ?>" ><?php echo $all_item->name; ?></a> 
			<?php 
		}
		else
		{ 
			//Вывод остальных неактивных элементов ?>
			<a href="<?php echo $link; ?>" ><?php echo $all_item->name; ?></a> 
			<?php 
		}
	}
?>

8) Навигацию мы вывели остался последний штрих, а именно query_posts(т.е. сам вывод постов рубрики)

Кроме стандартных параметров(фильтров вывода или имени произвольного типа записей) нам понадобится аргумент tax_query

1-ый параметр отвечает, как вы догадались за слаг таксономии.

2-ой отвечает за вариацию 3-его параметра(там можно написать id, и тогда вместо slug’а рубрики нам нужно будет написать ее id).

Ну и 3-ий параметр это сама рубрика, а именно ее slug или id(в зависимости от 2-ого параметра).

<?php
	query_posts(
		array(...... , 'tax_query' => 
			array(
				array(
					'taxonomy' => $the_tax->name,
					'field' => 'slug',
					'terms' => $this_term
				)
			)
		) 
	); 
?>
  • z-17

    Да допили ты уже свой блог

    • admin

      Mozh ti nahuy poydesh?