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