カテゴリーページやタグページなど、複数の投稿を一覧で表示するページを「アーカイブページ」と呼びます。そのページの先頭に「〇〇の記事一覧」といった見出しを出したいとき、投稿ごとの the_title() ではうまくいきません。アーカイブ全体のタイトルを扱うのが the_archive_title() と get_the_archive_title() です。この記事では、archive.php での基本的な使い方から、標準で付く「カテゴリー: 」などの接頭辞を消す・変えるフィルター、あわせて説明文を出す the_archive_description() まで、初心者の方にも分かるように解説します。
目次
アーカイブのタイトルとは何か
WordPress でカテゴリー一覧・タグ一覧・日付別一覧・投稿者別一覧などを表示するページは、テーマの中では基本的に archive.php というテンプレートで描画されます。ここで欲しいのは「この一覧は何の一覧なのか」を表す見出しです。たとえばカテゴリー「WordPress」のページなら「WordPress」、2026年7月の日付ページなら「2026年7月」といった具合です。
この見出し用のタイトルを、いま表示しているアーカイブの種類を自動で判定して作ってくれるのが the_archive_title() と get_the_archive_title() です。カテゴリーなのか、タグなのか、日付なのかを自分で条件分岐で書かなくても、適切なタイトルを組み立ててくれます。
the_archive_title と get_the_archive_title の違い
WordPress のテンプレートタグには、the_ で始まるものと get_the_ で始まるものがペアになっているものが多くあります。アーカイブタイトルもその1つで、違いはシンプルです。the_archive_title() はタイトルをその場で出力(echo)し、get_the_archive_title() はタイトルを文字列として返す(return)という点だけが異なります。
| 関数 | 動作 | 使う場面 |
|---|---|---|
the_archive_title() | アーカイブのタイトルを出力する | テンプレートにそのまま見出しを表示したいとき |
get_the_archive_title() | アーカイブのタイトルを文字列で返す | 変数に入れる・加工する・条件に使うとき |
「見出しとして画面に出すだけ」なら the_archive_title()、「いったん受け取って整形してから使う」なら get_the_archive_title() と覚えておけば迷いません。get_the_archive_title() の結果を自分で出すときは echo を忘れないようにしましょう。
archive.php でアーカイブ見出しを表示する
もっとも基本的な使い方は、archive.php のループの前で the_archive_title() を呼ぶだけです。次のコードは、アーカイブのタイトルを <h1> の見出しとして表示し、そのあとに投稿一覧を並べる例です。
<?php get_header(); ?>
<main class="archive">
<header class="archive-header">
<h1 class="archive-title"><?php the_archive_title(); ?></h1>
</header>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<article>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
</article>
<?php endwhile; endif; ?>
</main>
<?php get_footer(); ?>
これだけで、カテゴリーページを開けばそのカテゴリー名が、タグページを開けばそのタグ名が、日付ページを開けばその年月が、自動的に見出しとして表示されます。表示するページの種類に応じて中身が切り替わるのが、この関数の便利なところです。
ページの種類ごとに出力されるタイトル
get_the_archive_title() は、いま表示しているページの種類を判定して、タイトルの先頭に「カテゴリー: 」「タグ: 」といった接頭辞(プレフィックス)を付けて返します。標準の状態では、おおよそ次のような文字列になります。
| ページの種類 | 出力されるタイトルの例 |
|---|---|
| カテゴリーアーカイブ | カテゴリー: WordPress |
| タグアーカイブ | タグ: CSS |
| 投稿者アーカイブ | 投稿者: 山田太郎 |
| 日付(年)アーカイブ | 年: 2026年 |
| 日付(月)アーカイブ | 月: 2026年7月 |
| カスタム投稿タイプのアーカイブ | アーカイブ: お知らせ |
| カスタムタクソノミー | (タクソノミー名): 用語名 |
このように、接頭辞が付くことで「これはカテゴリーの一覧です」と一目で分かる反面、デザインによっては「カテゴリー: 」の部分が邪魔に感じることもあります。次の見出しで、この接頭辞を消す方法を紹介します。
「カテゴリー: 」などの接頭辞を消す
タイトルの先頭に付く接頭辞は、get_the_archive_title_prefix というフィルターフックで変更できます。このフィルターは接頭辞の文字列(「カテゴリー: 」など)を受け取るので、空文字を返すようにすれば接頭辞だけをきれいに消せます。functions.php に次のように書きます。
<?php
// アーカイブタイトルの接頭辞(「カテゴリー: 」など)を消す
add_filter( 'get_the_archive_title_prefix', '__return_empty_string' );
__return_empty_string は、WordPress があらかじめ用意している「空文字を返すだけの関数」です。これを使うと、カテゴリーページなら「カテゴリー: WordPress」ではなく「WordPress」だけが表示されるようになります。接頭辞を消したいだけならこの1行で十分です。
接頭辞を完全に消すのではなく、別の言葉に置き換えたい場合は、無名関数で好きな文字列を返します。次の例では、接頭辞を「#」に変えています。
<?php
// 接頭辞そのものを別の文字列に置き換える
add_filter( 'get_the_archive_title_prefix', function ( $prefix ) {
return '#';
} );
get_the_archive_title_prefix は接頭辞の部分だけを対象にするフィルターなので、タイトル本体(カテゴリー名など)はそのまま残ります。「余計な文字だけ消したい・変えたい」というときに、もっとも安全で分かりやすい方法です。
タイトル全体を自由に作り変える
接頭辞だけでなく、タイトル全体を組み立て直したい場合は get_the_archive_title フィルターを使います。こちらは接頭辞を含んだ完成後のタイトル文字列を受け取るので、ページの種類を判定して独自の文言に置き換えられます。たとえば「カテゴリーのときはカテゴリー名だけ、それ以外は標準のまま」といった調整ができます。
<?php
// タイトル全体を条件に応じて組み立て直す
add_filter( 'get_the_archive_title', function ( $title ) {
if ( is_category() ) {
// カテゴリー名だけを返す(接頭辞なし)
$title = single_cat_title( '', false );
} elseif ( is_tag() ) {
$title = single_tag_title( '', false );
}
return $title;
} );
single_cat_title() や single_tag_title() は、接頭辞なしでカテゴリー名・タグ名だけを取得できる関数です。第2引数に false を渡すと出力せず値を返すので、フィルターの戻り値として使えます。細かく作り込みたいときは、この get_the_archive_title フィルターと is_category() などの条件分岐タグを組み合わせるとよいでしょう。
アーカイブの説明文も表示する
タイトルとあわせてよく使うのが the_archive_description() です。これは、カテゴリーやタグの管理画面で入力した「説明」を出力する関数です。タイトルの下に一覧の補足説明を出したいときに便利です。文字列として受け取りたい場合は get_the_archive_description() を使います。
<header class="archive-header">
<h1 class="archive-title"><?php the_archive_title(); ?></h1>
<?php if ( get_the_archive_description() ) : ?>
<div class="archive-description">
<?php the_archive_description(); ?>
</div>
<?php endif; ?>
</header>
説明が空のカテゴリーもあるため、get_the_archive_description() で中身があるかを確認してから <div> を出力すると、説明のないページで空の枠が残らずきれいに仕上がります。
タイトルが空になる・意図した表示にならないとき
フロントページやトップページで呼んでいる
the_archive_title() は「アーカイブページ」で使うことを前提にした関数です。サイトのフロントページや通常の固定ページ、単独の投稿ページで呼んでも、意味のあるタイトルは得られず、空になったり見出しとしておかしな表示になったりします。アーカイブ以外のページで見出しを出したいときは、the_title() や single_post_title() など用途に合った関数を使ってください。
get_the_archive_title() の結果が表示されない
get_the_archive_title() は値を返すだけなので、echo を付け忘れると画面には何も出ません。表示専用でよければ the_archive_title() に置き換えると確実です。自分で出力先に埋め込むときは、必要に応じて esc_html() でエスケープしておくと安全です。
接頭辞を消したのに反映されない
接頭辞を消すコードは、使っているテーマの functions.php(子テーマを使っているなら子テーマ側)に書く必要があります。プラグインやキャッシュの影響で見た目が変わらないこともあるので、フィルター名が get_the_archive_title_prefix で正しいかを確認し、ページのキャッシュを一度クリアしてから再確認してください。なお、このフィルターは接頭辞だけを扱うため、タイトル本体まで消したいわけではないときにちょうど良い選択肢です。
まとめ
the_archive_title() と get_the_archive_title() は、アーカイブページの見出しを、ページの種類に応じて自動で組み立ててくれる便利な関数です。要点を整理します。
the_archive_title()はその場で出力、get_the_archive_title()は文字列を返す。- 標準では「カテゴリー: 」などの接頭辞が付く。
- 接頭辞を消すなら
get_the_archive_title_prefixフィルターに__return_empty_stringを渡す。 - タイトル全体を作り変えるなら
get_the_archive_titleフィルターと条件分岐タグを使う。 - 説明文は
the_archive_description()で表示できる。
まずは archive.php に the_archive_title() を置いて表示を確認し、デザインに合わせて接頭辞を調整する、という順番で進めると分かりやすいでしょう。