WP_Query отображает ВСЕ записи
Я не могу понять, почему мой WP_Query
всегда отображает все опубликованные записи независимо от того, какие аргументы я указываю.
<?php
$args = array('numberposts' => 1,
'meta_key' => 'display',
'meta_value' => 'about'
);
$about_preview_query = new WP_Query($args);
if ($about_preview_query->have_posts()) {
print "<h1>НАЙДЕНЫ ЗАПИСИ</h1>";
}
while ($about_preview_query->have_posts()) {
$about_preview_query->the_post();
print "<h1>";
the_title();
print "</h1>";
}
?>
Делаю ли я что-то неправильно? После прочтения документации по WP_Query()
я не могу понять, где ошибаюсь, буду благодарен за любую помощь.
Обновление
Я попробовал этот код, но всё ещё получаю тот же результат. Все записи возвращаются в цикле.
$args = array(
'posts_per_page' => 1,
'meta_query' => array(
array(
'key' => 'display',
'value' => 'about',
'compare' => '=',
)
),
);
Обновление 2
Похоже, если я вывожу $about_preview_query->found_posts
, результат равен 1. Поэтому я подозреваю, что что-то не так с тем, как я перебираю записи:
<?php if ($about_preview_query->have_posts()): ?>
<h1>Найдено <?php print $about_preview_query->found_posts ?> записей</h1>
<?php while ($about_preview_query->have_posts()): $about_preview_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php endwhile; ?>
<?php endif; ?>

Это происходит потому, что вы передаете неверные аргументы. Укажите правильные аргументы для WP_Query()
.
Также ознакомьтесь с параметрами произвольных полей.
Ещё один момент — вам нужно использовать код вида:
$args = array(
'posts_per_page' => 5, // Количество записей на странице
'meta_query' => array( // Запрос по произвольным полям
array(
'key' => 'display', // Ключ произвольного поля
'value' => 'about', // Значение для сравнения
'compare' => '=', // Оператор сравнения (подробнее по ссылке выше)
),
),
);

Параметр numberposts
не существует. Вместо него используйте posts_per_page
. Таким образом, ваш код будет выглядеть так...
<?php
$args = array(
'posts_per_page' => 1,
'meta_key' => 'display',
'meta_value' => 'about'
);
$about_preview_query = new WP_Query($args);
if ( $about_preview_query->have_posts() ) {
print "<h1>НАЙДЕНЫ ЗАПИСИ</h1>";
}
while ( $about_preview_query->have_posts() ) {
$about_preview_query->the_post();
print "<h1>";
the_title();
print "</h1>";
}
?>
