Использую следующий код, чтобы выводить посты из custom post type
query_posts(
array(
'post_type' => 'success-stories',
'paged' => $paged,
'posts_per_page' => -1,
'meta_key' => 'post_id',
'orderby' => 'meta_value_num',
'order' => 'ASC'
)
);
Задано произвольное поле post_id, для того чтобы была возможность ручной сортировки постов (в нужном порядке). Но также нужно, чтобы выводились и те посты, у которых этот параметр не задан. Подскажите, что нужно изменить в параметрах запроса?
query_posts использовать небезопасно.
Используйте get_posts, pre_get_posts или WP_Query.
https://developer.wordpress.org/reference/functions/query_posts/
https://codex.wordpress.org/Function_Reference/get_posts
https://developer.wordpress.org/reference/hooks/pre_get_posts/
https://codex.wordpress.org/Class_Reference/WP_Query
'meta_key' => 'post_id'
В названиях нельзя использовать "post_id". Это зарезервированный (служебный) термин.
Запрос надо делать по OR, выбирая как те записи, где post_id не определен, так и те, где он больше нуля:
$args = array(
'post_type' => 'success-stories',
'paged' => $paged,
'posts_per_page' => -1,
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'post_id',
'compare' => 'NOT EXISTS',
'value' => ''
),
array(
'key' => 'post_id',
'compare' => '>',
'value' => '0'
)
),
'orderby' => 'meta_value_num',
'order' => 'ASC'
);
query_posts($args);
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники