WordPressの年別アーカイブページで「次の年」「前の年」のリンクを表示する方法
WordPressのarchive.phpのような年別アーカイブページで、「次の年」「前の年」のようなリンクを表示する方法です。
まず、functions.phpに次のように関数を記述します。
//次の年のリンクを取得 function get_next_year_link() { $this_year = intval( get_the_time( 'Y' ) ); $next_year = $this_year + 1; //次の年に投稿があるか調べる $args = array( 'year' => $next_year, ); $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) { return get_year_link( $next_year ); } } //前の年のリンクを取得 function get_prev_year_link() { $this_year = intval( get_the_time( 'Y' ) ); $prev_year = $this_year - 1; //前の年に投稿があるか調べる $args = array( 'year' => $prev_year, ); $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) { return get_year_link( $prev_year ); } }
次に、archives.phpのようなテンプレートファイルでリンクを表示したい箇所に下記を記述します。
<?php if( get_next_year_link() ): ?> <a href="<?php echo get_next_year_link(); ?>">次の年へ</a> <?php endif; ?> <?php if( get_prev_year_link() ): ?> <a href="<?php echo get_prev_year_link(); ?>">前の年へ</a> <?php endif; ?>
もし、index.phpのようにテンプレートファイルを共通化している場合は、次のようにif文に is_year() を追加すれば、年別アーカイブの時だけ表示されるようになります。
<?php if( get_next_year_link() && is_year() ): ?> <a href="<?php echo get_next_year_link(); ?>">次の年へ</a> <?php endif; ?> <?php if( get_prev_year_link() && is_year() ): ?> <a href="<?php echo get_prev_year_link(); ?>">前の年へ</a> <?php endif; ?>