techronicle テクロニクル

Webサイト作成に関する情報提供サイトです。WordPress,HTML+CSSなど。

カスタム投稿一覧をカテゴリー別に出力

2015/06/25 WordPress

WordPressでカスタム投稿一覧をカテゴリー別に出力したいときのコード例です。

こちらを参考にさせてもらいました。


<?php
// タクソノミ取得
$catargs = array(
'taxonomy' => 'shop_cat'
);
$catlists = get_categories( $catargs );
foreach($catlists as $cat) : // 取得したカテゴリの配列でループを回す
?>
<h3><?php echo $cat->name; ?></h3>
<ul>
<?php
$args = array(
'post_type' => 'shop',
'shop_cat' => $cat->slug,
'numberposts' => '-1',
);
$my_posts = get_posts( $args );
if ( $my_posts ) { // 該当する投稿があったら
foreach ( $my_posts as $post ) :
setup_postdata( $post );
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> [<?php
if ($terms = get_the_terms($post->ID, 'shop_area')) {
foreach ( $terms as $term ) {
echo esc_html($term->name);
}
}
?>
]</li>
<?php
endforeach;
} else {
echo 'このカテゴリに店舗はありません';
}
wp_reset_postdata();
?>
</ul>
<?php endforeach; ?>

「’numberposts’ => ‘-1’,」を入れておかないと全件が表示されません。

これだと構造上、データが増えても長い1ページになってしまうので、そうなったら先頭に見出しへのリンク付インデックスなどをつけると訪問者に親切かもしれません。