【WordPress】カスタム投稿タイプの記事一覧(アーカイブ)ページを作成する方法

/

【WordPress】カスタム投稿タイプの記事一覧(アーカイブ)ページを作成する方法

Custom Post Type UIなどでカスタム投稿タイプを作成したのに、アーカイブページ(記事一覧)が表示されない場合の対処法です。

原因:「アーカイブあり」がfalseになっている

Custom Post Type UIのデフォルト設定では、「アーカイブあり(Has Archive)」がFalseになっています。これをTrueに変更する必要があります。

プラグイン側の設定

  1. Custom Post Type UI → 投稿タイプの編集
  2. 「投稿タイプスラッグ」を確認
  3. 「アーカイブあり」をTrueに変更

設定変更後、パーマリンクの空更新(設定 → パーマリンク設定 → 何も変えずに「変更を保存」)を忘れずに。

テーマ側の設定

テーマ内にarchive-{投稿タイプスラッグ}.phpを作成します。

例:カスタム投稿タイプのスラッグがblogの場合 → archive-blog.php

archive-blog.phpの中身

<?php get_header(); ?>

<div class="entry-list">
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
    'paged'          => $paged,
    'posts_per_page' => 12,
    'post_type'      => 'blog',
);

$wp_query = new WP_Query($args);
if ($wp_query->have_posts()) :
    while ($wp_query->have_posts()) : $wp_query->the_post();
?>
    <div class="entry-item">
        <a class="entry-item__link" href="<?php the_permalink(); ?>">
            <p class="entry-item__ttl"><?php the_title(); ?></p>
            <time class="entry-item__day"><?php the_time('Y.m.d'); ?></time>
        </a>
    </div>
<?php
    endwhile;
    the_posts_pagination();
endif;
wp_reset_postdata();
?>
</div>

<?php get_footer(); ?>

ポイント

  • post_type — カスタム投稿タイプのスラッグを指定(プラグイン設定のスラッグと一致させる)
  • posts_per_page — 1ページあたりの表示件数
  • the_posts_pagination() — WordPress標準のページネーション関数

チェックリスト

アーカイブページが表示されない場合は、以下を順に確認:

  • Custom Post Type UIの「アーカイブあり」がTrueになっているか
  • パーマリンクの空更新をしたか
  • テーマファイル名がスラッグと一致しているか(archive-{スラッグ}.php
  • post_typeの指定がスラッグと一致しているか