Цикл по пользовательским таксономиям и отображение записей
Хотя мне удалось реализовать это для обычных категорий WordPress, я не смог добиться работы с пользовательскими таксономиями.
Я хотел бы организовать цикл по каждой пользовательской таксономии (в моем случае категории) и вывести определенное количество записей для каждой.
Пример желаемого вывода:
Категория 1
запись из категории один
запись из категории один
читать далее категорию один
Категория 2
запись из категории два
запись из категории два
читать далее категорию два
Конечно, это должно повторяться для всех доступных таксономий пользовательского типа записи.

Я решил предоставить еще один ответ, так как предыдущий был немного "костыльным". Также я добавил дополнительный уровень, который получает все таксономии для типа записи.
$post_type = 'post';
// Получаем все таксономии для этого типа записи
$taxonomies = get_object_taxonomies( (object) array( 'post_type' => $post_type ) );
foreach( $taxonomies as $taxonomy ) :
// Получаем все термины в этой таксономии, чтобы найти соответствующие записи
$terms = get_terms( $taxonomy );
foreach( $terms as $term ) :
$posts = new WP_Query( "taxonomy=$taxonomy&term=$term->slug&posts_per_page=2" );
if( $posts->have_posts() ): while( $posts->have_posts() ) : $posts->the_post();
// Здесь размещаем ваш стандартный цикл запросов
endwhile; endif;
endforeach;
endforeach;
Рекомендуется добавлять каждую найденную запись в массив $post__not_in
, чтобы затем передать его в WP_Query
и избежать появления дублирующихся записей.

Вы ищете это?
<?php query_posts(array('post_type' => 'post type name', 'Taxonomy slug' => $term->slug ) ); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php endwhile; else: ?>
<p><?php _e('Извините, нет записей, соответствующих вашему критерию.'); ?></p>
<?php endif; ?>
Как создать цикл для пользовательской таксономии
Надеюсь, это поможет

Скопируйте и вставьте эту функцию в ваш файл functions.php
if ( ! function_exists( 'display_all_products_from_all_categories' ) ) {
function display_all_products_from_all_categories() {
// Получаем все категории для произвольного типа записи "Товар"
$args = array(
'post_type' => 'product',
'orderby' => 'id',
'order' => 'ASC'
);
$categories = get_categories( $args );
foreach ($categories as $category) {
?>
<div class="<?php echo $category->slug; ?>">
<!-- Выводим название категории -->
<h3 class="title"><?php echo $category->name; ?></h3>
<!-- Выводим описание категории -->
<div class="description">
<p><?php echo category_description( get_category_by_slug($category->slug)->term_id ); ?></p>
</div>
<ul class="mhc-product-grid">
<?php
// Получаем все товары каждой конкретной категории
$product_args = array(
'post_type' => 'product',
'orderby' => 'id',
'order' => 'ASC',
'post_status' => 'publish',
'category_name' => $category->slug // передаем slug текущей категории
);
$product_list = new WP_Query ( $product_args );
?>
<?php while ( $product_list -> have_posts() ) : $product_list -> the_post(); ?>
<li class="product <?php the_field( 'product_flavor' ); ?>">
<a href="<?php the_permalink(); ?>" class="product-link">
<!-- Если у записи есть изображение, выводим его -->
<?php if( has_post_thumbnail() ) : ?>
<?php the_post_thumbnail( 'full', array( 'class' => 'img', 'alt' => get_the_title() ) ); ?>
<?php endif; ?>
<!-- Произвольные поля: product_flavor, product_description и т.д. -->
<h3 class="title <?php the_field( 'product_flavor' ); ?>"><?php the_title(); ?></h3>
<p class="description"><?php the_field( 'product_description' ); ?></p>
</a>
</li>
<?php endwhile; wp_reset_query(); ?>
</ul>
</div>
<?php
}
}
}
Затем вызовите её из любого места вашего шаблона с помощью:
display_all_products_from_all_categories();

Пожалуйста, ознакомьтесь с примером; создайте собственный цикл для вашей таксономии. Вы также можете использовать это в foreach-цикле для обработки всех категорий. Или вам нужно создать собственный SQL-запрос.
<?php
$taxonomies = get_the_term_list($post->ID, 'ВАША_ТАКСОНОМИЯ', '', '', '');
$taxonomies = explode('>', $taxonomies);
$taxonomies = $taxonomies[1];
$myq = new WP_Query('your_taxonomie = '.$taxonomies);
if ($myq->have_posts()) : while ($myq->have_posts()) : $myq->the_post(); // начало цикла ?>
<?php the_title();?>
<?php the_content();?>
<?php endwhile; else:?>
<?php endif;?>
