web-dev-qa-db-ja.com

2つのmeta_queriesを持つmeta_keyで並ぶ

これは簡単なはずですが、これを行うための正しい構文の良い例を突き止めることはできません。

指定したmeta_keyを2つのmeta_queriesで並べ替えます。問題は、query_postsがmeta_keyを持つmeta_queriesを2つ持っていることを好まないようです。 meta_queriesの1つを削除すると、コードは機能します。あるいは、meta_keyを削除してorderbyをtitleに変更し、meta_queriesをそのままにしても機能します。

2つのmeta_queriesを使ってmeta_keyを並べ替える方法はありますか?

    $args2 = array(
        'meta_key' => '_count-views_all',
        //'meta_value' => $id,
        'orderby' => 'meta_value_num',
        'order' => $sortOrder,
        'posts_per_page' => 9,
        'paged' => $paged,
        'meta_query' => array(  
                    'relation' => 'OR',
                    array(
                        'key' => 'contributorid1',
                        'value' => $id,
                        'compare' => '='
                        ),

                    array(
                        'key' => 'contributorid2',
                        'value' => $id,
                        'compare' => '='
                        )
                    )
    );
    $posts = query_posts($args2); 
}
2
Christopher

これは3.1以降のWP_Queryを meta_query を使って行うことができます。

$args = array(
    'meta_key' => '_count-views_all',
    'orderby' => 'meta_value_num',
    'order' => $sortOrder,
    'posts_per_page' => 9,
    'paged' => $paged,
    'meta_query' => array(
        'relation'  => 'OR'
        array(
            'key'     => 'contributorid1',
            'value'   => $id,
            'compare' => '='
        ),
        array(
            'key'     => 'contributorid2',
            'value'   => $id,
            'compare' => '='
        )
    )
);

$query = new WP_Query( $args );
1