固定ページ等の中で、投稿で使用しているタグの一覧を表示する際、通常は[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>';
}
?>
パーマリンク構造に関係なくどの環境でも使えると思うので、ぜひお試しください。
