запросы с пользовательским meta полем с meta_query

Как мы получаем сообщения, где метаклавиша не существует в сообщении. Я создал meta_key видео. и я хочу смочь получить некоторые сообщения с WP_Query, где пользовательское полевое видео не существует или является пробелом.

$fsquery = new WP_Query( 
                        array ( 
                        'posts_per_page' => 1,
                        'featured' => 'yes',
                        'meta_key'=>'video',
                        'meta_value'=>''
                        )
                    );

это не работает.

3
06.10.2014, 17:28
3 ответа

Существует на самом деле лучшее решение, которое будет (надо надеяться), развертывать в WordPress 3.4 - можно выполнить патч как текущие исправления теперь, если Вы хотели бы, но здесь являетесь ссылкой TRAC для патча:

http://core.trac.wordpress.org/ticket/18158

С этим можно сделать...

    $my_query = new WP_Query( 
        array( 
            'meta_query' => array( 
                array(
                    'key' => 'foo',
                    'compare' => 'NOT EXISTS'
                )
            ) 
        ) 
    );

или, выгрузите, это для 'выдерживает сравнение' =>, 'СУЩЕСТВУЕТ' вместо этого, если Вам нравится.

- George

2
19.02.2020, 22:17

Можно использовать posts_where отфильтруйте сцепляют и создают Подзапрос для исключения всех сообщений с meta_key видео:

// Create a new filtering function that will add our where clause to the query
function filter_where_WPSE_18787( $where = '' ) {

    $where .= " AND ID NOT IN ( SELECT DISTINCT post_id from $wpdb->postmeta WHERE meta_key = 'video' )";
    return $where;
}
add_filter( 'posts_where', 'filter_where_WPSE_18787' ); 

$fsquery = new WP_Query( 
    array ( 
        'posts_per_page' => 1,
        'featured' => 'yes'
        ));

remove_filter('posts_where', 'filter_where_WPSE_18787' ); 
1
19.02.2020, 22:17
$my_query = new WP_Query( 
        array( 
            'meta_query' => array( 
                array(
                    'key' => 'foo',
                    'compare' => 'NOT EXISTS'
                )
            ) 
        ) 
    );

используемый только в WP 3.5. Это - все еще бета-версия в данный момент.

1
19.02.2020, 22:17
  • 1
    Добро пожаловать в WPSE. Довольный иметь Вас здесь. meta_query также используется в версиях <3.5. Кроме того, фрагменты кода становятся более полезными при сопровождении с объяснением. спасибо –  Brian Fegter 09.10.2012, 12:58

Теги

Похожие вопросы