Вывод всех постов произвольных таксономий по категориям
Есть сайт на WordPress. Также есть код, который приведу ниже. На данный момент мне выводит список всех произвольных категорий. В каждом <div class="cat-block"> выводится название категории, список постов внутри этой категории, ссылка на саму категорию:
<div class="home-wrap">
<div class="cat-block">
<div class="cat-title">Категория 1</div>
<div class="posts-list">
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
</div>
<a href="" class="btn">See more</a>
</div>
<div class="cat-block">
<div class="cat-title">Категория 2</div>
<div class="posts-list">
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
</div>
<a href="" class="btn">See more</a>
</div>
<div class="cat-block">
<div class="cat-title">Категория 3</div>
<div class="posts-list">
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
</div>
<a href="" class="btn">See more</a>
</div>
<div class="cat-block">
<div class="cat-title">Категория 4</div>
<div class="posts-list">
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
<h3>Услуга категории 1</h3>
</div>
<a href="" class="btn">See more</a>
</div>
</div>
Проблема в том, что сейчас во всех категориях почему то выводятся не их посты, а посты с первой категории. Вот код вывода:
<div class="home-wrap">
<?php $cats = get_categories(array('taxonomy'=>'services_cat')); // get list of categories
foreach ($cats as $cat) { ?>
<div class='cat-block'>
<div class="cat-title"><?php echo $cat->cat_name; ?></div>
<div class='posts-list'>
<?php
$custom_terms = get_terms('services_cat');
$args = array(
'post_type' => 'services',
'tax_query' => array(
array(
'taxonomy' => 'services_cat',
'field' => 'slug',
'terms' => $custom_terms[0]->slug,
),
)
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
?>
<h3><?php the_title(); ?></h3>
<?php
}
}
wp_reset_postdata();
?>
</div>
<a href="<?php echo esc_url( $category_link ); ?>" class="btn"><?php _e('See more', 'crea'); ?></a>
</div>
<?php } ?>
</div>
Ответы (1 шт):
Автор решения: Valerii Vasiliev
→ Ссылка
В этом участке ошибка.
$custom_terms = get_terms('services_cat');
$args = array(
'post_type' => 'services',
'tax_query' => array(
array(
'taxonomy' => 'services_cat',
'field' => 'slug',
'terms' => $custom_terms[0]->slug,
),
)
);
Нужно использовать данные из верхнего цикла foreach ($cats as $cat)
Нужно заменить фрагмент на
$args = array(
'post_type' => 'services',
'tax_query' => array(
array(
'taxonomy' => 'services_cat',
'field' => 'id',
'terms' => array( $cat -> term_id )
),
)
);