カスタム投稿の一覧ページが表示されない場合

カスタム投稿の一覧ページが表示されない場合次の事が考えられる。順に解説したいと思います。

  • 'has_archive' => trueが抜けている
  • archive-sample.phpファイルがない
  • 管理画面からのパーマリンク設定の更新をしていない

‘has_archive’ => trueが抜けている

通常の投稿にはメニューの左上に【投稿一覧を表示】といったリンクがあります。カスタム投稿の場合'has_archive' => trueとパラメータを配列にセットしないとカスタム投稿に【投稿一覧を表示】といったリンクが表示されません。

下記のコードは色々と抜けていますが'has_archive' => trueと追加すれば管理画面上に【投稿一覧を表示】といったリンクが表示されます。

add_action( 'init', 'register_post_type_sample' );
function register_post_type_sample(){
	$labels = [
		'name' => 'Sample',
	];

	$args = [
		'labels' => $labels,
		'public' => true,
		'show_in_rest' => true,
		'has_archive' => true,
	];
	register_post_type('sample', $args);
}

もしここの設定で表示されない場合はカスタム投稿用のテンプレートファイルが用意されていない、またはパーマリンク設定に問題がある可能性がありますので下記をご覧ください。

archive-{post_type}.phpファイルがない

カスタム投稿の投稿一覧を表示させるテンプレートファイルは下記の順で優先的にテンプレートファイルを読み込み出力されます。

  1. archive-{post_type}.php 
  2. archive.php
  3. index.php

archive-{post_type}.phpの場合{post_type}の記述が間違っていると表示されず、archive.phpの内容が反映されます。archive-{post_type}.phpのファイル名はregister_post_type('post_type', $args);で設定している'post_type'に該当します。

管理画面からのパーマリンク設定の更新をしていない

パラメータ$args'rewrite'を追記した場合、【管理画面】の【設定】にある【パーマリンク】にアクセスし【変更を保存】を更新しないとうまくページが表示されませんので必ず更新をしてください。