タクソノミーによって投稿を検索する

タクソノミーによって投稿を検索する方法について書きます。

$args = array(
    'post_type' => 'movie',
    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'genre',
            'field'    => 'slug',
            'terms'    => array( 'action', 'comedy' ),
        ),
        array(
            'taxonomy' => 'actor',
            'field'    => 'slug',
            'terms'    => array( 'aaaa', 'bbbb', 'cccc' ),
            'operator' => 'AND'
        ),
    ),
);
$query = new WP_Query( $args );

以上のような条件で検索をかけたとします。

まず  ’post_type’ => ‘movie’  でカスタム投稿タイプを’movie’に絞っています。

次にタクソノミーによって絞っています。今回は2つの条件で絞っています。

一つ目が’genre’で、これは’action’か’comedy’どちらかであれば条件を満たすとするという意味になります。

二つ目が’actor’で、これは一つ目と異なり’operator’として’AND’が指定してあります。これは’actor’が’aaaa’, ‘bbbb’, ‘cccc’のすべてを満たしていなければならないという意味になります。

‘operator’はデフォルトでは’IN’となっています。’IN’の他には’NOT IN’,’AND’,’EXISTS’,’NOT EXISTS’が指定可能です。このうち’IN’と’EXISTS’,’NOT IN’と’NOT EXISTS’はほとんど同じ意味を表していますが、処理速度やNULLが含まれる場合など微妙に違いがあるので注意が必要です。(参考: http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10104717260 )