Фильтрация WP_Query для записей с определенным мета-значением

21 дек. 2010 г., 10:04:32
Просмотры: 25.2K
Голосов: 8

Как отфильтровать WP_Query для получения записей с определенным мета-значением без использования пользовательского SQL-запроса?

У меня есть произвольный тип записи с мета-ключом: "open" и возможными мета-значениями: "yes" или "no".

Я хочу показывать только записи с meta_value = yes для meta_key = "open".

function filter_where($where = '') {    

    $open = "yes";

    // $where .= " AND post_date > '" . date('Y-m-d', strtotime('-2 days')) . "'";
    return $where;
}
add_filter('posts_where', 'filter_where');
1
Комментарии

Вы делаете это в файле шаблона? Можете тогда показать полный код вашего файла шаблона? Это основной цикл данной страницы?

Jan Fabry Jan Fabry
28 дек. 2010 г. 12:53:28
Все ответы на вопрос 2
5
14

Я не совсем понял из вашей формулировки, пробовали ли вы использовать аргумент запроса или это не сработало?

$the_query = new WP_Query(array( 'meta_key' => 'open', 'meta_value' => 'yes' ));

Параметры произвольных полей в Кодексе.

21 дек. 2010 г. 11:19:10
Комментарии

спасибо за ваш быстрый ответ. Я пробовал это сделать, но по какой-то причине у меня не работает. У меня выдает ошибку 404.

Henk Jan Henk Jan
21 дек. 2010 г. 11:56:15

Куда вы вставили этот код?

t31os t31os
21 дек. 2010 г. 22:34:54

Я добавил его в массив $args после настройки $paged: $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; и перед: $temp = $wp_query; $wp_query= null; $wp_query = new WP_Query($args);

Henk Jan Henk Jan
22 дек. 2010 г. 13:17:17

@Henk Jan, пожалуйста, добавьте код к вашему вопросу, комментарии для этого не подходят

Rarst Rarst
22 дек. 2010 г. 13:28:22

мой пользовательский тип записи не был правильно зарегистрирован в базе данных. После того как я это исправил, ваше решение сработало. Спасибо.

Henk Jan Henk Jan
19 янв. 2011 г. 13:22:46
3
 $querystr = "
    SELECT wposts.* 
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wposts.ID = wpostmeta.post_id 
    AND wpostmeta.meta_key = 'custom-key' 
    AND wposts.post_type = 'page' 
    ORDER BY wpostmeta.meta_value DESC
    ";
8 окт. 2012 г. 21:31:31
Комментарии

Объяснение расскажет нам, почему это ответ.

Brian Fegter Brian Fegter
8 окт. 2012 г. 22:53:10

Поддерживаю. Также: используйте методы $wpdb при выполнении запросов.

kaiser kaiser
9 окт. 2012 г. 01:08:34

Определённо стоит использовать WP_Query вместо чистого SQL. Почему? Кэширование, мультисайты и многое другое.

O. Jones O. Jones
13 июн. 2023 г. 18:42:12