[WordPress] WP_Queryでタクソノミー(ターム)による絞り込みをしたい
WP_Query関数を使ってカスタム投稿をタクソノミーで絞り込む方法をまとめました。
サンプルコード
<?php
    $args = array(
        'post_type' => 'post_type_xxx',
        'tax_query' => array(
            array(
                'taxonomy' => 'tax_xxx',
                'field' => 'slug',
                'terms' => 'tm_xxx'
            )
        )
    );
    $the_query = new WP_Query($args);
    if($the_query->have_posts()) {
        while($the_query->have_posts()) {
            $the_query->the_post();
            
?>
    〜
<?php
        }
    }
    wp_reset_postdata();
?>
    カスタム投稿「post_type_xxx」の記事から、タクソノミー「tax_xxx」のターム「tm_xxx」が設定されたものだけを抽出します。
複数のタクソノミーで絞り込む場合
<?php
    $args = array(
        'post_type' => 'post_type_xxx',
        'tax_query' => array(
            'relation' => 'OR',
            array(
                'taxonomy' => 'tax_xxx',
                'field' => 'slug',
                'terms' => 'tm_xxx'
            ),
            array(
                'taxonomy' => 'tax_yyy',
                'field' => 'slug',
                'terms' => 'tm_yyy'
            )
        )
    );
    $the_query = new WP_Query($args);
    if($the_query->have_posts()) {
        while($the_query->have_posts()) {
            $the_query->the_post();
            
?>
    〜
<?php
        }
    }
    wp_reset_postdata();
?>
    カスタム投稿「post_type_xxx」の記事から、
タクソノミー「tax_xxx」のターム「tm_xxx」が設定されたもの、または
タクソノミー「tax_yyy」のターム「tm_yyy」が設定されたものを抽出します。
「relation」がかけ合わせの条件になっています。「OR」ならいずれかのタクソノミーが合致したものを抽出し、「AND」ならすべてのタクソノミーが合致したものを抽出します。
ご質問など受け付けています
記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。
ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。