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');