query_posts и отображение результатов только если произвольное поле не пустое
Как использовать query_posts
и показывать только те результаты, у которых произвольное поле не пустое или имеет значение.
Я хочу добавить URL в произвольное поле и показывать только те страницы, у которых есть URL?
Текущий код, но я не могу понять остальное:
$args = array( 'posts_per_page' => '10', // количество записей на страницу
'post_type' => 'programmes', // тип записи
'orderby' => 'meta_value_num', 'meta_key' => 'popularityfig', // сортировка по числовому значению мета-поля
'order' => 'DESC', // порядок сортировки по убыванию
);

Попробуйте этот код:
$args = array(
'posts_per_page' => '10',
'post_type' => 'programmes',
'meta_key' => 'popularityfig',
'meta_value' => '',
'meta_compare' => '!=',
'order' => 'DESC'
);
В коде есть 2 аргумента, на которые стоит обратить внимание: meta_value
и meta_compare
. Использование оператора !=
в meta_compare
исключит записи с пустым значением метаполя.

Спасибо, теперь я вижу это в codex! Не уверен, почему не видел раньше!! Еще раз спасибо.

По какой-то причине это продолжало вытягивать все мои записи, независимо от значения. Вместо этого я использовал 'meta_value' => array('') и 'meta_compare' => 'NOT IN', и это сработало. Я создал свое мета-значение с помощью плагина Advanced Custom Fields (ACF), и это было просто текстовое поле.

Неясно, сработал ли приведенный выше ответ для вас, @erichmond, но у меня точно не сработал. Однако я нашел решение. Смотрите: Как показать записи только если meta_value не пуст

Принятый ответ не работал для меня с текстовым полем в Advanced Custom Fields. Он продолжал выводить все записи после их сохранения, когда текстовое поле было добавлено в Custom Fields. Мне пришлось использовать решение, похожее на другие:
$args = array(
'meta_key' => 'your_acf_field', // Укажите ключ вашего поля ACF
'meta_value' => array(''), // Исключаем записи с пустыми значениями
'meta_compare' => 'NOT IN', // Оператор сравнения "НЕ В"
);
