「archive.php」で、カテゴリーやタグを限定したアーカイブページは最初から存在していますが、残念ながら全記事のアーカイブページは存在していません。
ただし、functions.phpに設定を加えることで、全記事一覧ページを実装することができます。
コードのコピー方法
コード右上のアイコンをクリックすることでコピーできます。

それでは本文へ、レッツゴー!
全記事一覧のアーカイブページ実装方法
functions.phpに下記をコピペすることで実装することができます。
ただしコピペした後に必ず、ワードプレスの管理画面から一度パーマリンク部分の「変更を保存」をクリックしないと反映されないのでご注意ください。
なお、パーマリンクの内容自体は変更不要です。
ただそのページまで行って「変更を保存」だけポチっとしてください。
<?php
function post_has_archive( $args, $post_type ) {
if ( 'post' == $post_type ) {
$args['rewrite'] = true;
$args['has_archive'] = 'archive'; // 任意のスラッグ名
}
return $args;
}
add_filter( 'register_post_type_args', 'post_has_archive', 10, 2 );
?>
全記事一覧のスラッグを変更する
サンプルコードでは、スラッグを「archive」に設定してありますので、
サイトURL/archive/
で全記事の一覧が表示されるようになっています。
$args[‘has_archive’]の右側、シングルクォーテーションで囲まれた「archive」の部分を好きに編集することで、全記事一覧のスラッグを自由に変更することができます。
参照するファイルはarchive.php
この方法で作ったページは、archive.phpを参照します。
archive.phpではおそらく、タイトルの出力を分岐させていると思います。
例えば、
カテゴリ一覧の場合はカテゴリ名をタイトルに出力
月別一覧の場合は年月をタイトルに出力
と言った感じです。
では、このページの場合もタイトルを分岐させなければいけませんね。
archive.phpで適切なタイトルを出力させる
タイトルを分岐させたい場所に以下をコピペすることで、出力を分岐させることができます。
<?php
$archive_url = esc_url(home_url('/archive/'));
$now_url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://'). $_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI'];
?>
<?php if($archive_url == $now_url): ?>
全投稿一覧
<?php endif; ?>
$archive_url は、アーカイブページのURLを格納しています。
/archive/の部分は各自設定したスラッグに変更してください。
$now_url は、現在開いているページのURLを格納しています。
アーカイブページのURLと現在開いているページのURLがイコールの時、「全投稿一覧」と表示するような指示を出しています。
うまくいかない場合、各変数をvar_dumpで出力してURLを確認し、調整してください。
var_dumpについて分からない方はこちら