複数のメタキーとメタ値による順序付け[終了]


16

メタ値によって複数のメタキーの順序を設定するにはどうすればよいですか?


4
WPSEへようこそ-私たちがあなたを助けるために、あなたは私たちを助ける必要があります。あなたがやろうとしていることをより詳細に説明し、おそらくいくつかのコードサンプルを投稿してください。
TheDeadMedic 2016年

回答:


31

meta_queryメタ句の配列です。例えば:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

連想配列を使用して、各meta句のキーを指定できます。

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

次に、そのキーをorder_by引数で使用できます。

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => 'city_clause', // Results will be ordered by 'city' meta values.
) );

以上の条項:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => array( 
        'city_clause' => 'ASC',
        'state_clause' => 'DESC',
    ),
) );

Make WordPres Coreブログのこの投稿からの例。


メタキー/値のタイプを追加することを忘れないでください。結果に影響します。デフォルトでは、wpはメタを文字列として扱います。
Alexander Ivashchenko

3
しかし、州がウィスコンシンである結果だけを返したくない場合はどうなりますか?私はすべての州が返されるようにしたいし、都市がある場合とない場合がある行があり、それでもこれらの2つのフィールドで並べ替えます。たとえば、WHERE句はまったくなく、ORDER BYだけです。
Felix Eve、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.