4.1 投稿のアーカイブページを作る - Yoshikikojima/hajimete-no-wordpress GitHub Wiki

メインのテンプレート(index.php)では投稿が最大 10 件まで表示されていました。さらに 10 件を見れるように「もっと見る」ボタンを付けて、アーカイブページに移動するようにしてみましょう。

functions.php にアーカイブの設定を書き込む

functions.php は、テンプレートとは関係ないプログラムを書き込むファイルです。このファイルに全テンプレートで共通で使い回すプログラムを記述したり、表面上には出力されない特殊な処理などを書き込むことがあります。

通常の設定だと投稿のアーカイブは表示できないので、ここにアーカイブの設定を書き込みます。

/* 投稿アーカイブを有効にしてスラッグを指定する */
function post_has_archive( $args, $post_type ) {

	if ( 'post' == $post_type ) {
		$args['rewrite'] = true;
		$args['has_archive'] = 'news'; // スラッグ名
	}
	return $args;

}
add_filter( 'register_post_type_args', 'post_has_archive', 10, 2 );

例えば URL をhttps://chot.design/news/にしたい場合は$args['has_archive']の値をnewsと記述します。

archive.php を作成する

index.php をコピーして archive.php を作成します。

ページネーションを追加する

ループの中にページネーションを追加します。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

  // ここに表示内容を記述する

<?php endwhile; ?>

  <?php the_posts_pagination(); ?>

<?php else : ?>

  <p>まだ記事がありません</p>

<?php endif; ?>

index.php にリンクを追加する

「もっと見る」ボタンを追加します。

<a href="/news/page=2">もっと見る</a>