2017年5月18日木曜日

【WP】 カスタム投稿のアーカイブが表示されない(404)時の確認事項 【WordPress】


カスタム投稿を設定した後でページを確認したら、単体ページ(single-***.php)は表示されるけど、一覧ページ(archive-***.php)は表示されない(404エラー)というときに確認するべき事項を紹介します。
※プラグインを使わずにfanction.phpでカスタム投稿タイプの定義を行っている場合です。

1、「設定」のパーマリンク設定を更新してみる


実はこれで解決することが多いようです。


2、アーカイブのURLを調べてみる


パーマリンクの設定をいじっている場合、実際のアーカイブページのパーマリンクと自分が思っているものが違うことがあります。
とりあえずは、アーカイブURLを確認してみることをおすすめします。

<?php echo get_post_type_archive_link( '***' ); ?>

上記をsingle-***.phpなどのテンプレートに入れると、アーカイブのURLが表示されます。


このとき、get_post_type_archive_linkを挿入した個所に何も表示されない場合はそもそもアーカイブ設定を行っていない可能性があります。
fanction.php内でカスタム投稿の記述をしているところにhas_archiveの記述漏れがないか確認してみてください。
カスタム投稿タイプ設定の記述をどこからかコピペで持ってきた場合に陥りやすいです。
というのも、WPのパーマリンク設定がデフォルトの場合、has_archiveの記述がなくてもカスタム投稿がアーカイブを持てるため、省略されている場合が多いからです。

パーマリンクの設定をいじってデフォルト以外にしている場合はhas_archiveをtrueに設定することで、カスタム投稿がアーカイブページを持つことができます。
register_post_type関数の配列のどこかに「'has_archive' => true,」を追加してあげればOKです。

【※】fanction.php内をいじった後は、必ず「設定」のパーマリンク設定を更新してください。



先日、has_archiveの記入漏れで自分が嵌ってしまいました。
その時調べた限りではプラグインのhas_archiveをtrueにする方法はよく見かけたのですが、fanction.php内のhas_archiveのことを指摘する記事はなかったように思うので、ここにメモとして残しておきます。
同じような状態に陥っている方の助けになれば幸いです。

それでは、今回はこれで終わります。

0 件のコメント :

コメントを投稿