固定ページ等の中で、投稿で使用しているタグの一覧を表示する際、通常は[get_tags]関数を使い、下記のような簡単なコードを記述することになります。
<ul> <?php $tags = get_tags('orderby=name&order=ASC'); $orderby = apply_filters( 'get_terms_orderby', $orderby, $args ); if ($tags) { foreach($tags as $tag) { ?> <li><a href="<?php echo get_tag_link($tag->term_id); ?>"><?php echo $tag->name ; ?></a></li> <?php } ?> <?php } ?> </ul>
通常はこれで事足りますが、投稿の数が多くなってきて、タグも数十、あるいは数百個に増えてくると、ページネーションを実装したくなります。
WordPressのデフォルトの機能では用意されていないので、少々長いコードになりますが、以下の方法で導入できました。
<?php if( isset($_GET['showall']) ): $args = array( 'hide_empty' => 0 ); else: $page = ( get_query_var('paged') ) ? get_query_var( 'paged' ) : 1; $per_page = 80; // number of tags to show per-page $offset = ( $page-1 ) * $per_page; $args = array( 'number' => $per_page, 'offset' => $offset, 'hide_empty' => 0, 'orderby' => name, 'order' => ASC ); endif; $taxonomy = 'post_tag'; $tax_terms = get_terms( $taxonomy, $args ); ?> <ul> <?php foreach ($tax_terms as $tax_term) { ?> <li><a href="<?php echo esc_attr(get_term_link($tax_term, $taxonomy)); ?>"><?php echo $tax_term->name; ?></a></li> <?php } ?> </ul> <?php // pagination if( !isset($_GET['showall']) ) { $total_terms = wp_count_terms( 'post_tag' ); $pages = ceil($total_terms/$per_page); if( $pages > 1 ){ ?> <div class="pagination"> <ol> <?php for ($pagecount=1; $pagecount <= $pages; $pagecount++): ?> <li><a href="<?php echo get_permalink() . 'page/' . $pagecount ; ?>/"><?php echo $pagecount ?></a></li> <?php endfor; ?> </ol> </div> <?php } echo '<p><a href="'.get_permalink().'?showall=true">すべてのタグを表示</a></p>'; } else { echo '<p><a href="'.get_permalink().'">分割して表示 </a></p>'; } ?>
パーマリンク構造に関係なくどの環境でも使えると思うので、ぜひお試しください。