tax_queryを使用すれば、条件指定して記事を取得することができます。
tax_queryはこんな時に便利
例えばこんな時。[図A]
図のように、条件に合致する記事だけ取得したりすることができます。
カテゴリで絞り込んだ一覧ページを作ったりする際に便利です。
tax_queryで記事を取得
図Aの例の場合、下記のように記述すると記事一覧を取得できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<pre class="lang:php decode:true " ><?php $tax_posts = get_posts( array( 'post_type' => 'qa', //投稿タイプ 'tax_query' => array( array( 'taxonomy' => 'qa_cat', //カスタムタクソノミー 'field' => 'slug', 'terms' => array( 'catX' ), //タクソノミーターム ) ) )); ?> </pre> |
これで、カスタム投稿qaの、カスタム分類 qa_cat のcatXに属する投稿が取得できます。
tax_queryで取得した記事を表示する
取得した記事を表示するところまで含めたタグはこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php //記事を取得 $tax_posts = get_posts( array( 'post_type' => 'qa', //投稿タイプ 'tax_query' => array( array( 'taxonomy' => 'qa_cat', //カスタムタクソノミー 'field' => 'slug', 'terms' => array( 'catX' ), //タクソノミーターム ) ) )); //記事を表示 if($tax_posts) { ?> <ul> <?php foreach($tax_posts as $tax_post): setup_postdata($tax_post);?> <li> 記事タイトル: <?php echo get_the_title($tax_post->ID); ?> URL: <?php echo get_permalink($tax_post->ID); ?><br> サムネイル: <?php echo get_the_post_thumbnail( $tax_post->ID, 'medium'); ?><br> 投稿日: <?php the_time('Y年n月j日' , $tax_post->ID) ?> 抜粋: <?php echo mb_substr(get_the_excerpt($tax_post->ID), 0, 40);?>... </li> <?php endforeach; wp_reset_postdata(); ?> </ul> <?php } ?> |
foreach文を回して記事を表示しています。
条件を複雑にする
tax_queryは、検索条件をANDとORで選択することが出来ます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php //記事を取得 $tax_posts = get_posts( array( 'post_type' => 'qa', //投稿タイプ 'tax_query' => array( 'relation' => 'OR', //条件設定:ORかAND array( //条件1つめ 'taxonomy' => 'qa_cat', //条件1:カスタムタクソノミー 'field' => 'slug', 'terms' => array( 'catX' ), //条件1:タクソノミーターム ), array( //条件2つめ 'taxonomy' => 'qa_cat', //条件2:カスタムタクソノミー 'field' => 'slug', 'terms' => array( 'catY' ), //条件2:タクソノミーターム ) ) )); ?> |
‘relation’ => ‘OR’,が追加になっています。
これを追加し、直後に続くarrayをカンマ繋ぎで追加すると、「OR条件で検索」することができます。
これで、カスタム投稿qaの、「カスタム分類 qa_cat のcatXに属する投稿」もしくは「カスタム分類 qa_cat のcatYに属する投稿」が取得できます。文字にすると少し複雑ですね。
デフォルトはAND条件になっています。
詳細なリファレンスはこちらに記載されています。
タクソノミーのパラメータ