初心者コーダーのための
HTML/CSS JavaScript PHP WordPress
難しい言葉や概念より、実践重視の入門ブログ
WordPress

【WordPress】全記事一覧ページを実装する方法【全記事アーカイブ】

【WordPress】全記事の一覧 全記事一覧を表示するアーカイブページを作ろう!

「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について分からない方はこちら