ミギムキ

[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です。