yalamber
  • 0
Новичок

Запрос с пользовательским метаполем с помощью meta_query

  • 0

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

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

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

Share
  1. На самом деле есть лучшее решение, которое (надеюсь) будет развернуто в 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'
                    )
                ) 
            ) 
        );
    

    или замените его на «сравнить» => «СУЩЕСТВУЕТ», если хотите.

    -Джордж

    • 0
  2. Вы можете использовать posts_where ловушку фильтра и создать подзапрос, чтобы исключить все сообщения с мета_ключом видео:

    // 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' ); 
    
    • 0
  3. $my_query = new WP_Query( 
            array( 
                'meta_query' => array( 
                    array(
                        'key' => 'foo',
                        'compare' => 'NOT EXISTS'
                    )
                ) 
            ) 
        );
    

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

    • 0

Оставить ответ

You must login to add an answer.