web-dev-qa-db-ja.com

meta_queryを使ってカスタムメタフィールドで問い合わせる

投稿にメタキーが存在しない投稿をどのように取得しますか。 meta_key動画を作成しました。そして、私はカスタムフィールドビデオが存在しないか空白であるWP_Queryでいくつかの投稿を取得できるようにしたいです。

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

これはうまくいきません。

3
Yalamber

(うまくいけば)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'
                )
            ) 
        ) 
    );

または、代わりに 'compare' => 'EXISTS'に置き換えてください。

- ジョージ

2
Daljo628

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

WP 3.5でのみ使用されます。現時点ではまだベータ版です。

1
Solr Newbie