カスタム投稿タイプのアーカイブを作るには

0
1297
views

カスタム投稿タイプのアーカイブを作るには、has_archive プロパティを true にします。

has_archive の初期値は false

カスタム投稿タイプは、作っただけではアーカイブは作られません。作ったばかりのデフォルト設定では、has_archive プロパティの値が false になっているからです。

カスタム投稿タイプの各種設定は、name、label、public などそれぞれのプロパティを設定することで行えます。そうしたプロパティの中でも has_archive は、その投稿タイプがアーカイブを持つかどうかを決める値になります。

has_archive には、true か false かのどちらかの値が設定でき、何も設定しなければ自動的に自動的に false、つまりアーカイブが作られないことになります。

has_archive の値 アーカイブ
true 作られる
false 作られない

has_archive に何も設定しない状態でアーカイブの URL をブラウザで開けば、当然そんなページはないとリクエストが返ってきます。

プラグインを使った場合

このような設定をコードで組んでいくのは慣れていないと管理が大変なので、カスタム投稿タイプの作成には通常、プラグインを使います。

よく使われているのは Custom Post Type UI、通称 CPT UI です。

この CPT UI の投稿タイプ編集画面にも、もちろん has_archive の設定項目があります。

このように値が false になっているとアーカイブができないので、セレクトボックスを true にして該当の投稿タイプの設定を保存しておきます。

落とし穴

ただ、true にしてもアーカイブができないことが多々あります。その原因の1つは、変更が反映されていないためです。

CPT UI には、設定の変更を確実に反映させるための確認項目があります。

設定保存ボタンの近くにある Migrate posts to newly renamed post type? というチェックボックスが、その確認項目に当たります。

簡単にいうと、投稿タイプの変更を実際の投稿に反映させるかを尋ねています。なので大事なのは、ここのチェックボックスにチェックを入れ忘れないようにしてから、設定を保存することです。

これで無事に has_archive の true 設定が反映され、http:// ドメイン / 投稿タイプ名 の URL にアーカイブが表示されました。