アーカイブ
アーカイブは、WordPressで過去の投稿を整理して一覧表示する機能の総称です。カテゴリー別、タグ別、日付別、著者別など、様々な条件で投稿をグループ化し、ユーザーが求める情報を見つけやすくします。アーカイブページは、サイトのユーザビリティとSEOの両面で重要な役割を果たします。
アーカイブの基本概要
アーカイブとは
アーカイブ(Archive)は、元々「記録保管所」「書庫」を意味する言葉です。WordPressでは、過去の投稿を様々な基準で分類し、一覧表示するページをアーカイブページと呼びます。
アーカイブページは、ユーザーが過去のコンテンツを探しやすくするだけでなく、検索エンジンがサイトの構造を理解するのにも役立ちます。適切に設計されたアーカイブページは、サイト全体のSEOを向上させ、ユーザーの滞在時間を延ばす効果があります。
アーカイブページの種類
WordPressでは、以下のようなアーカイブページが自動生成されます:
| アーカイブの種類 | URLの例 | 用途 |
|---|---|---|
| カテゴリーアーカイブ | /category/news/ | 特定カテゴリーの投稿一覧 |
| タグアーカイブ | /tag/wordpress/ | 特定タグの投稿一覧 |
| 日付アーカイブ | /2026/01/ | 特定期間の投稿一覧 |
| 著者アーカイブ | /author/username/ | 特定著者の投稿一覧 |
| カスタム投稿タイプアーカイブ | /products/ | カスタム投稿タイプの一覧 |
| カスタムタクソノミーアーカイブ | /product-category/electronics/ | カスタム分類の投稿一覧 |
アーカイブページとテンプレート
WordPressは、アーカイブページの種類ごとに異なるテンプレートファイルを使用します。テンプレート階層に従って、最も適切なファイルが自動的に選択されます:
// アーカイブページのテンプレート階層
【カテゴリーアーカイブ】
category-{slug}.php → category-{id}.php → category.php → archive.php → index.php
【タグアーカイブ】
tag-{slug}.php → tag-{id}.php → tag.php → archive.php → index.php
【日付アーカイブ】
date.php → archive.php → index.php
【著者アーカイブ】
author-{nicename}.php → author-{id}.php → author.php → archive.php → index.php
【カスタム投稿タイプアーカイブ】
archive-{post_type}.php → archive.php → index.php
各アーカイブページの詳細
カテゴリーアーカイブ
カテゴリーアーカイブは、最もよく使用されるアーカイブページの一つです。カテゴリーごとに投稿を整理し、ユーザーが興味のあるトピックを探しやすくします。
- URL形式: /category/カテゴリー名/
- 利用シーン: ブログ、ニュースサイト、メディアサイト
- SEO効果: カテゴリーページは重要なランディングページになり得る
// カテゴリーアーカイブのカスタマイズ例
// category.phpまたはfunctions.php
<?php
// カテゴリーページのタイトルと説明文を取得
$category = get_queried_object();
$category_name = $category->name;
$category_description = $category->description;
?>
<h1><?php echo esc_html($category_name); ?></h1>
<?php if ($category_description) : ?>
<p class="category-description"><?php echo esc_html($category_description); ?></p>
<?php endif; ?>
<?php if (have_posts()) : ?>
<div class="posts-grid">
<?php while (have_posts()) : the_post(); ?>
<article class="post-card">
<?php the_post_thumbnail('medium'); ?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p><?php the_excerpt(); ?></p>
</article>
<?php endwhile; ?>
</div>
<?php the_posts_pagination(); ?>
<?php endif; ?>
タグアーカイブ
タグアーカイブは、より細かいトピックで投稿をグループ化します。カテゴリーよりも柔軟で、複数のタグを一つの投稿に付けることができます。
タグアーカイブは、関連記事を横断的に表示するのに適しています。例えば、「WordPress」カテゴリーの中で「初心者」「プラグイン」「セキュリティ」などのタグを使用することで、より詳細な分類が可能になります。
日付アーカイブ
日付アーカイブは、年別、月別、日別に投稿を表示します。ニュースサイトやブログで、時系列でコンテンツを探す場合に便利です。
// 日付アーカイブのURL形式
/2026/ → 2026年の全投稿
/2026/01/ → 2026年1月の投稿
/2026/01/31/ → 2026年1月31日の投稿
日付アーカイブページは、古い投稿が多くなると管理が難しくなります。また、日付の情報がURLに含まれると、コンテンツが古く見える可能性があるため、エバーグリーンコンテンツ(時間が経っても価値が衰えないコンテンツ)を扱うサイトでは使用を避けるべきです。
著者アーカイブ
複数の著者がいるサイトで、各著者の投稿を一覧表示します。個人ブランディングや、執筆者ごとの記事を見つけやすくするのに役立ちます。
// 著者アーカイブのカスタマイズ例
// author.php
<?php
$author = get_queried_object();
$author_name = $author->display_name;
$author_bio = get_the_author_meta('description', $author->ID);
$author_posts_count = count_user_posts($author->ID);
?>
<div class="author-header">
<?php echo get_avatar($author->ID, 120); ?>
<h1><?php echo esc_html($author_name); ?></h1>
<p class="author-bio"><?php echo esc_html($author_bio); ?></p>
<p class="author-stats">投稿数: <?php echo $author_posts_count; ?>件</p>
</div>
<div class="author-posts">
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<!-- 投稿の表示 -->
<?php endwhile; ?>
<?php endif; ?>
</div>
アーカイブページのカスタマイズ
表示順序の変更
デフォルトでは、アーカイブページは新しい投稿から順に表示されますが、これをカスタマイズできます:
// functions.php - アーカイブページの表示順序を変更
// カテゴリーアーカイブを古い順に表示
function custom_archive_order($query) {
if (!is_admin() && $query->is_main_query() && is_category()) {
$query->set('order', 'ASC'); // 昇順(古い順)
}
}
add_action('pre_get_posts', 'custom_archive_order');
// 特定カテゴリーで人気順(コメント数)に表示
function popular_posts_in_category($query) {
if (!is_admin() && $query->is_main_query() && is_category('reviews')) {
$query->set('orderby', 'comment_count');
$query->set('order', 'DESC');
}
}
add_action('pre_get_posts', 'popular_posts_in_category');
表示件数の変更
アーカイブページごとに異なる表示件数を設定できます:
// アーカイブページの表示件数をカスタマイズ
function custom_posts_per_page($query) {
if (!is_admin() && $query->is_main_query()) {
// カテゴリーアーカイブでは12件表示
if (is_category()) {
$query->set('posts_per_page', 12);
}
// タグアーカイブでは8件表示
if (is_tag()) {
$query->set('posts_per_page', 8);
}
// 日付アーカイブでは15件表示
if (is_date()) {
$query->set('posts_per_page', 15);
}
}
}
add_action('pre_get_posts', 'custom_posts_per_page');
除外設定
特定の投稿やカテゴリーをアーカイブから除外することもできます:
// 特定の投稿やカテゴリーを除外
function exclude_from_archives($query) {
if (!is_admin() && $query->is_main_query() && is_archive()) {
// 特定のカテゴリーID(例:5)を除外
$query->set('cat', '-5');
// 特定の投稿ID(例:10, 20, 30)を除外
$query->set('post__not_in', array(10, 20, 30));
// 下書きやプライベート投稿を除外(デフォルトで除外されているが明示的に指定)
$query->set('post_status', 'publish');
}
}
add_action('pre_get_posts', 'exclude_from_archives');
アーカイブページのSEO最適化
タイトルとディスクリプション
アーカイブページのタイトルとメタディスクリプションを最適化することで、検索エンジンからの流入を増やせます:
// functions.php - アーカイブページのSEOタイトルをカスタマイズ
function custom_archive_title($title) {
if (is_category()) {
$title = single_cat_title('', false) . ' - ' . get_bloginfo('name');
} elseif (is_tag()) {
$title = single_tag_title('', false) . 'の記事一覧 - ' . get_bloginfo('name');
} elseif (is_date()) {
$title = get_the_date('Y年n月') . 'の記事 - ' . get_bloginfo('name');
} elseif (is_author()) {
$title = get_the_author() . 'の記事一覧 - ' . get_bloginfo('name');
}
return $title;
}
add_filter('wp_title', 'custom_archive_title');
// Yoast SEOやRank Mathを使用している場合は、それらのプラグインの設定で管理することを推奨
ページネーションの最適化
アーカイブページが複数ページにわたる場合、ページネーションを正しく実装することが重要です:
// アーカイブページのページネーション実装
<?php
// 標準的なページネーション
the_posts_pagination(array(
'mid_size' => 2,
'prev_text' => '« 前へ',
'next_text' => '次へ »',
));
// または、カスタムページネーション関数を作成
function custom_archive_pagination() {
global $wp_query;
if ($wp_query->max_num_pages > 1) {
echo '<nav class="pagination">';
echo paginate_links(array(
'total' => $wp_query->max_num_pages,
'current' => max(1, get_query_var('paged')),
'format' => '?paged=%#%',
'show_all' => false,
'end_size' => 1,
'mid_size' => 2,
'prev_next' => true,
'prev_text' => '« 前',
'next_text' => '次 »',
'type' => 'plain'
));
echo '</nav>';
}
}
?>
<!-- アーカイブテンプレートで呼び出し -->
<?php custom_archive_pagination(); ?>
よくある質問(FAQ)
まとめ
アーカイブページは、WordPressサイトの重要な構成要素です。この記事で学んだポイントを再確認しましょう:
- アーカイブページは過去の投稿を分類して一覧表示する機能
- カテゴリー、タグ、日付、著者など複数の種類がある
- 各アーカイブページには専用のテンプレート階層がある
- functions.phpで表示順序や表示件数をカスタマイズできる
- SEO最適化にはタイトル、ディスクリプション、ページネーションが重要
- サイトの種類に応じて、不要なアーカイブはnoindex化する
- ユーザビリティとSEOのバランスを考えて設計する
アーカイブページを適切に活用することで、ユーザーが情報を見つけやすくなり、サイト全体の価値が向上します。