カスタム投稿タイプのアーカイブページが表示されない場合の直し方

leaves
WordPressで生成するページには「投稿ページ」と「固定ページ」という種別があります。

大まかに言えば、ブログ記事のように時系列で管理するものは「投稿ページ」が適していて、時系列ではなく親ページ・子ページのような階層での管理をしたいものは「固定ページ」が適している。

また、上記2つとは別に新たな種別を用意したい場合は「カスタム投稿タイプ」というものを設定することができます。
このブログでは「カスタム投稿タイプ」は使用していませんが、私の本業のサイトのほうでは使用している。

「カスタム投稿タイプ」を設定すると管理画面は下画像のように左メニューに新たな項目が出現し、投稿ページや固定ページとは別枠での管理やテンプレートファイルの適用ができるようになるのです。
管理画面でのカスタム投稿タイプ

アーカイブページのテンプレートファイル

アーカイブページというのは各ページが一覧で表示されるページのことを言います。
このブログを例にして言うと、トップページカテゴリ別一覧ページ月別一覧ページがアーカイブページになるわけです。
アーカイブページ

例えばカテゴリ別一覧ページを作りたいのなら、そのテンプレートファイルはcategory.phpcategory-スラッグ名.phpなどになります。
月別一覧や年別一覧の場合はdate.phpになります。

そのあたりを詳しく知りたい場合はテンプレート階層 – WordPress Codex 日本語版に詳しい説明があります。

カスタム投稿タイプのアーカイブページのテンプレートファイルとURL

上記のWordPress Codexに記載されている通り、カスタム投稿タイプのアーカイブページはarchive-カスタム投稿タイプ名.phpである。

archive.phpでも可能ですが、archive.phpはカテゴリ別一覧や月別一覧などとも兼用(category.phpdate.phpがない場合)になるので、多くの場合はarchive-カスタム投稿タイプ名.phpを用意するのではないかと思います。
そしてそのアーカイブページのURLはパーマリンク設定が数字ベースの場合、

http://www.ドメイン名/archives/カスタム投稿タイプ名

となります。
パーマリンク設定が数字ベース

または、single.phpやsidebar.phpなど何らかのテンプレートファイル内でget_post_type_archive_link関数を使用すれば、カスタム投稿タイプアーカイブページのURLが出力されますので、それで確認すると間違いがないでしょう。

<?php echo get_post_type_archive_link( 'カスタム投稿タイプ名' ); ?>

もし、WordPressにログインしている管理者だけが上記のリンクURLを確認したい場合は以下のように、

<?php if( current_user_can( 'administrator' ) ): ?>
<?php echo get_post_type_archive_link( 'カスタム投稿タイプ名' ); ?>
<?php endif; ?>

としておけば、サイトを閲覧している人に気付かれることなく、管理者である自分だけがURLの確認をできます。

参考ページ:関数リファレンス/get post type archive link – WordPress Codex 日本語版
参考ページ:関数リファレンス/current user can – WordPress Codex 日本語版

補足:カスタム投稿タイプ名がわからない場合

なにぃ~カスタム投稿タイプ名がわからないだと~!?
わからない
そのような場合は、function.php内でregister_post_type()関数が書かれている部分を探して確認すると良いでしょう。
以下のサンプルの場合「operation」がカスタム投稿タイプ名です。カスタム投稿タイプ名はこの位置で定義されています。(register_post_type()の第1引数)

//カスタム投稿タイプの定義
  register_post_type(
    'operation', array(
      'labels' => array(
        'name' => '運用事例紹介',
        'all_items' => '運用事例のページ一覧',
        'add_new_item' => '運用事例のページを新規追加',
        'edit_item' => '運用事例のページの編集',
      ),
      以下、省略。
    )
  );

もし、プラグイン「Custom Post Type UI(CPT UI)」を使用してカスタム投稿を定義しているのなら、WordPress管理画面でCustom Post Type UI(CPT UI)設定の中の「Manage Post Types」を開き、「名前」の欄で確認できます。
カスタム投稿タイプ名の表示場所

カスタム投稿タイプ名はそのカスタム投稿タイプを設定した本人が名付けたはずなので、いつでも答えられるように記憶しておくとベターです。
外を歩いているときに知らない人からこのように聞かれるかもしれません。
質問される
正しく答えられないと含み針や銃を撃たれたりします。(ジャギ – Wikipedia)

カスタム投稿タイプのアーカイブページが表示されない場合の直し方

しかし。
上記のarchive-カスタム投稿タイプ名.phpテンプレートファイルを用意しただけではアーカイブページは表示されない。
これを表示させるためには、function.php内でカスタム投稿タイプを設定した部分で、

'has_archive' => true,

が必要になる。
どういう理由かはわかりませんが、このhas_archiveは初期値がfalseである。
参考ページ:関数リファレンス/register post type – WordPress Codex 日本語版

実際の記述では以下のような感じで追記すると良いでしょう。

//カスタム投稿タイプ・運用事例
  register_post_type(
    'operation', array(
      'labels' => array(
        'name' => '運用事例紹介',
        'all_items' => '運用事例のページ一覧',
        'add_new_item' => '運用事例のページを新規追加',
        'edit_item' => '運用事例のページの編集',
      ),
      'public' => true,
      'supports' => array(
        'title',
        'editor',
        'custom-fields',
        'thumbnail',
        'author',
      ),
      'has_archive' => true,
    )
  );

以上の追記が終わったら、再びカスタム投稿タイプアーカイブページにアクセスしてみて表示を確認してみましょう。
きっと表示されているはずです。

後日追記:もしこれでも表示されない場合は一度WordPressのパーマリンク設定を開き、何も変更せずに「変更を保存」ボタンを押してパーマリンク設定を更新してみましょう。
パーマリンク設定

Custom Post Type UIのようなプラグインを使用してカスタム投稿タイプを定義している場合は後日日を改めて行おうと思います。

後日追記:プラグイン・Custom Post Type UIでのアーカイブページの表示設定を書きました。