WordPressで特定のタームに属する記事の一覧を出力する方法

WordPressで特定のタームに属する記事の一覧を出力する方法

WordPressで特定のタームに属する記事の一覧を出力する方法

ある特定のタームに属する記事だけを出力する方法を紹介します。

例えば、「ニュース」というタクソノミーの中の「IT」というタームに属する記事のみを出力したい時なんかに使えます。

特定のタームに属する記事の一覧を出力する方法

特定のタームに属する記事の一覧を出力するには、テーマ内に以下のコードを記述します。

<ul>
<?php
$args = array(
'post_type' => 'post', //投稿タイプ名
'posts_per_page' => 10, //出力する記事の数
'tax_query' => array(
array(
'taxonomy' => 'news', //タクソノミー名
'field' => 'slug',
'terms' => 'it' //タームのスラッグ
)
)
);
$domestic_post = get_posts($args);
if($domestic_post) : foreach($domestic_post as $post) : setup_postdata( $post ); ?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
<?php else : ?>
<li>表示する記事がありません。</li>
<?php endif;
wp_reset_postdata(); ?>
</ul>

上記を記述すると、「news」タクソノミーの「it」タームに属する記事が、10件リストで表示されます。投稿タイプ名やタクソノミー名、ターム名は適宜変更してください。

上記は、シンプルにリンク付きのタイトルをリストで出力するコードですが、アイキャッチと抜粋文も表示するなら、以下のような感じにします。

<ul>
<?php
$args = array(
'post_type' => 'post', //投稿タイプ名
'posts_per_page' => 10, //出力する記事の数
'tax_query' => array(
array(
'taxonomy' => 'news', //タクソノミー名
'field' => 'slug',
'terms' => 'it' //タームのスラッグ
)
)
);
$domestic_post = get_posts($args);
if($domestic_post) : foreach($domestic_post as $post) : setup_postdata( $post ); ?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php if( has_post_thumbnail() ): ?>
<?php the_post_thumbnail( 'thumbnail' ); ?>
<?php else: ?>
<img src="<?php echo get_template_directory_uri(); ?>/images/noimage.png">
<?php endif; ?>
<?php the_title(); ?>
<?php the_excerpt(); ?>
</a></li>
<?php endforeach; ?>
<?php else : ?>
<li>表示する記事がありません。</li>
<?php endif;
wp_reset_postdata(); ?>
</ul>

こんな感じで色々と自分好みにカスタマイズしてください。

ちなみにtax_queryのfieldで指定できる値は、「term_id」「slug」「name」「term_taxonomy_id」になります。

あとがき

タームの絞り込みにtax_queryを使うというところがミソですね。

特定のタームに属する記事の一覧を出力したいことって、結構ある気がします。上記のように簡単に実現することができますので、ぜひ参考にしていただければと思います。

この記事が気に入ったら
いいね!してね♪

Twitter で

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です