archive.phpの作り方とコード例

archive.phpは、WordPressにおいてさまざまな種類のアーカイブページで使用されるテンプレートファイルです。

その役割や作り方についてまとめました。

archive.phpとは

archive.phpは、特定のカテゴリーやタグなどに基づいて一覧で表示される「アーカイブページ」のテンプレートとして使用されます。

具体的には、下記のようなアーカイブページが存在します。

  • カテゴリー
  • タグ
  • 日付(日、月、年)
  • 著者
  • カスタム投稿タイプ

「新着記事一覧」はhome.phpが担い、「検索結果一覧」はsearch.phpが担いますが、それ以外の一覧ページはだいたいarchive.phpのテンプレートが使用されます。

archive.phpの作り方

archive.phpは、テーマフォルダ直下に設置することで読み込まれるようになります。

/wp-content/themes/テーマフォルダ/archive.php

ファイルの名称は固定ですので、archive.phpから変えないようにしましょう。

archive.phpの書き方・コード例

DAWNYでは下記の実装にしています。

<?php
if ( ! defined( 'ABSPATH' ) ) exit;
get_header();
?>

<article class="archive-page">
    <section class="archive-header-container">
        <h1 class="archive-title"><?php the_archive_title(); ?></h1>
        <div class="archive-description"><?php the_archive_description(); ?></div>
    </section>
    <section>
        <?php include_once get_template_directory() . '/template/article-list.php'; ?>
    </section>
</article>

<?php
get_footer();
?>

/template/article-list.phpには、実際に一覧を表示するテンプレートを格納しています。

それ以外はヘッダー呼び出し、タイトル周辺の実装、フッターの呼び出しというシンプルなコードです。

ちなみにアーカイブページのタイトルには、自動的にプレフィックスが付与されます。

例えば「WordPress」というカテゴリーのアーカイブページは「カテゴリー:WordPress」と、自動的に「カテゴリー:」の文字列が付与されてしまいます。

これらプレフィックスを削除するには、functions.phpで下記のような実装をします。

function remove_prefix_from_archive_title($title) {
    $prefixes = ['アーカイブ: ', 'カテゴリー: ', 'タグ: ', '投稿者: ', '日: ','月: ', '年: '];
    foreach ($prefixes as $prefix) {
        if (strpos($title, $prefix) === 0) {
            $title = substr($title, strlen($prefix));
            break;
        }
    }
    return $title;
}
add_filter('get_the_archive_title', 'remove_prefix_from_archive_title');