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! Не уверен, почему не видел раньше!! Еще раз спасибо.
erichmond
По какой-то причине это продолжало вытягивать все мои записи, независимо от значения. Вместо этого я использовал 'meta_value' => array('') и 'meta_compare' => 'NOT IN', и это сработало. Я создал свое мета-значение с помощью плагина Advanced Custom Fields (ACF), и это было просто текстовое поле.
AuRise
Неясно, сработал ли приведенный выше ответ для вас, @erichmond, но у меня точно не сработал. Однако я нашел решение. Смотрите: Как показать записи только если meta_value не пуст
Принятый ответ не работал для меня с текстовым полем в Advanced Custom Fields. Он продолжал выводить все записи после их сохранения, когда текстовое поле было добавлено в Custom Fields. Мне пришлось использовать решение, похожее на другие:
$args = array(
'meta_key' => 'your_acf_field', // Укажите ключ вашего поля ACF
'meta_value' => array(''), // Исключаем записи с пустыми значениями
'meta_compare' => 'NOT IN', // Оператор сравнения "НЕ В"
);