WordPressでサイトを作成している時に、カスタム投稿を使うことがあります。
その時に、タクソノミー別に投稿を一覧表示する方法をいろいろ調べたので、備忘録として紹介します。
カスタム投稿の作成方法はこちら
固定ページを作って、single-slug名.phpを編集しています。
タクソノミー別に一覧表示する
表示したい箇所に以下のコードを記述
<?php
// タクソノミー取得する
$catargs = array(
'taxonomy' => ‘タクソノミー名'
);
$catlists = get_categories( $catargs );
foreach($catlists as $cat) : // 取得したカテゴリの配列を回す
?>
<div class="itemcontainer">
<h2><?php echo $cat->name; ?></h2>
<?php
$args = array(
'numberposts' => -1,//全てのpostを持ってくる
'post_type' => 'カスタム投稿名',
'orderby' => 'post_date',//日付順
'order' => 'ASC',//投稿を古い順に表示
'タクソノミー名' => $cat->slug
);
$my_posts = get_posts( $args );
if ( $my_posts ) { // 該当する投稿があったら回す
foreach ( $my_posts as $post ) :
setup_postdata( $post );
?>
<a href="<?php the_permalink(); ?>" class="itembox">
<?php the_post_thumbnail(); ?>//サムネ
<h3><?php the_title(); ?></h3>//タイトル
</a>
<?php
endforeach;
} else {
echo 'このカテゴリに投稿はありません';
}
wp_reset_postdata();
?>
</div>
<?php endforeach; ?>
</div>
何も設定していないと5件しか表示されないので ‘numberposts’ => -1,で投稿を全て表示
また、$argsのarray内で、追加した投稿が下に続くように、 ‘order’ => ‘ASC’,で投稿を古い順に表示しています。
デフォルトでは新しい投稿が上に表示されます。
他にも色々設定できるみたいなので詳しくは公式ページを参考にしてください。
*archive-カスタム投稿名.phpで作った方が良いです。
理由は、下層のページのパンくずのリンクがカスタム投稿名になるからsingle-slug名.phpだとうまくいかないから。
slug名をカスタム投稿名にしても上手くいきませんでした。
以上、カスタム投稿をタクソノミー別に一覧表示する方法でした〜