<ul>
<?php
$cats = get_terms(array('taxonomy' => 'union', 'post_type' => 'city'));
foreach ($cats as $cat) { ?>
<li>
<h2>
<a href="<?php echo get_term_link($cat); ?>">
<?php echo get_field('eu-members') . ' ' . $cat->name . ' <small>🡢 ' . get_field('eu-show-more') . '</small>' ?>
</a>
</h2>
<ul>
<?php
$query_city = new WP_Query('posts_per_page=-1&order=ASC&post_type=city&taxonomy=' . $cat->term_id);
while ($query_city->have_posts()) {
$query_city->the_post();
$category = get_terms(array('taxonomy' => 'union', 'post_type' => 'city'));
if ($category[0]->term_id == $cat->term_id) { ?>
<li>
<figure><?php the_post_thumbnail() ?></figure>
<div>
<span><?php the_title() ?></span>
</div>
</li>
<?php }
}
wp_reset_postdata();
?>
</ul>
</li>
<?php } ?>
</ul>
get_terms()
нет аргумента post_type, а у WP_Query
аргумента taxonomyget_the_terms()
или has_term()
<ul>
<?php
// Получаем все термины таксономии 'union'
$cats = get_terms(array('taxonomy' => 'union', 'hide_empty' => false));
// Цикл по терминам таксономии
foreach ($cats as $cat) { ?>
<li>
<h2>
<a href="<?php echo get_term_link($cat); ?>">
<?php echo get_field('eu-members') . ' ' . $cat->name . ' <small>🡢 ' . get_field('eu-show-more') . '</small>' ?>
</a>
</h2>
<ul>
<?php
// Создаем новый WP_Query для получения постов текущего термина
$query_city = new WP_Query(array(
'posts_per_page' => -1,
'order' => 'ASC',
'post_type' => 'city',
'tax_query' => array(
array(
'taxonomy' => 'union', // Таксономия
'field' => 'term_id', // Поле термина
'terms' => $cat->term_id, // ID термина
),
),
));
// Проверяем наличие постов
if ($query_city->have_posts()) {
while ($query_city->have_posts()) {
$query_city->the_post(); ?>
<li>
<figure><?php the_post_thumbnail(); ?></figure>
<div>
<span><?php the_title(); ?></span>
</div>
</li>
<?php }
} else {
echo '<li>No posts found.</li>';
}
// Сбрасываем данные поста
wp_reset_postdata();
?>
</ul>
</li>
<?php } ?>
</ul>