query_posts и отображение результатов только если произвольное поле не пустое

24 февр. 2011 г., 11:31:40
Просмотры: 20.3K
Голосов: 3

Как использовать query_posts и показывать только те результаты, у которых произвольное поле не пустое или имеет значение.

Я хочу добавить URL в произвольное поле и показывать только те страницы, у которых есть URL?

Текущий код, но я не могу понять остальное:

$args = array( 'posts_per_page' => '10', // количество записей на страницу
    'post_type' => 'programmes', // тип записи
    'orderby' => 'meta_value_num', 'meta_key' => 'popularityfig', // сортировка по числовому значению мета-поля
    'order'  => 'DESC', // порядок сортировки по убыванию
    );
0
Все ответы на вопрос 3
3

Попробуйте этот код:

$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 исключит записи с пустым значением метаполя.

24 февр. 2011 г. 11:53:51
Комментарии

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

erichmond erichmond
24 февр. 2011 г. 12:08:56

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

AuRise AuRise
10 янв. 2018 г. 15:33:45

@Tessa Это сработало для меня. Спасибо!

sk03 sk03
25 окт. 2021 г. 22:35:14
0

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

2 мар. 2011 г. 21:50:40
0

Принятый ответ не работал для меня с текстовым полем в Advanced Custom Fields. Он продолжал выводить все записи после их сохранения, когда текстовое поле было добавлено в Custom Fields. Мне пришлось использовать решение, похожее на другие:

$args = array(  
    'meta_key' => 'your_acf_field', // Укажите ключ вашего поля ACF
    'meta_value' => array(''), // Исключаем записи с пустыми значениями
    'meta_compare' => 'NOT IN', // Оператор сравнения "НЕ В"
);
13 мая 2022 г. 17:09:25