Вывод постов WP_Query по id меткам

Пытаюсь вывести посты по id меткам внутри рубрики. Пробую такой код:

<?php
$popular = new WP_Query( [
'post_type' => 'post',
'posts_per_page' => 100,
'tag_id' => [ 14 ]
] );
while ( $popular->have_posts() ) {
$popular->the_post();
?>
<a href="<?php the_permalink(); ?>">
    <img src="<?php the_post_thumbnail_url() ?>">
</a>
<?php
}
wp_reset_postdata();
?>

Но ничего не выводится (пусто). Уточню, что на одной странице будут выводиться несколько таких блоков. Еще хотела бы поинтересоваться, можно ли как то внедрить в этот код функцию плагина ACF, что бы можно было указывать ID метки с админки, что то на подобие вот этого:

<?php
$popular = new WP_Query( [
'post_type' => 'post',
'posts_per_page' => 100,
'tag_id' => [ the_field('id_metki') ]
] );
while ( $popular->have_posts() ) {
$popular->the_post();
?>
<a href="<?php the_permalink(); ?>">
    <img src="<?php the_post_thumbnail_url() ?>">
</a>
<?php
}
wp_reset_postdata();
?>

Ответы (1 шт):

Автор решения: Neolot

Параметр tag_id в вашем коде должен быть числом, ID метки, а вы передаете ID как массив.

Таким образом, для одной метки в вашем случае код должен быть таким:

<?php
$popular = new WP_Query( [
'post_type' => 'post',
'posts_per_page' => 100,
'tag_id' => 14
] );
?>

Если же вам надо передать несколько меток в запрос, используйте параметр tag__in, в значение которого нужно присвоить массив с ID меток:

<?php
$popular = new WP_Query( [
'post_type' => 'post',
'posts_per_page' => 100,
'tag__in' => [ 14,15,16,17,18 ]
] );

Чтобы передать метку из поля ACF, код должен быть таким:

<?php
$popular = new WP_Query( [
'post_type' => 'post',
'posts_per_page' => 100,
'tag_id' => get_field('id_metki')
] );
→ Ссылка