WordPressでカスタム投稿タイプを追加したけど記事が表示されない!なんだか、年がら年中こんな現象に悩まされている気がします(笑)
以前も似たような現象(通常投稿ページが表示されない)に遭遇しましたが、今回はまた別のトラブルです。カスタム投稿の設定自体は正しく行っているはずなのに、いざ記事を公開してみると、ページが見つからない(404エラー)が出てしまうという現象です。
こういった問題に遭遇すると、原因が分からずに悩んでしまうことも多いですが、実はとても簡単に解決できることがほとんどです。今回は、カスタム投稿タイプが表示されない時の解決方法について、詳しく解説していきます。
関連記事:WordPressのカスタム投稿タイプの条件分岐タグまとめ
カスタム投稿が表示されない時の解決方法
カスタム投稿タイプを追加したのにページが表示されない場合、原因は主に「パーマリンク設定」にあります。WordPressのカスタム投稿タイプを使用する際には、新しく追加したカスタム投稿タイプに対してパーマリンク構造が正しく設定されている必要がありますが、これが自動で反映されないことがあります。
解決方法はとっても簡単!
解決方法はいたって簡単で、管理画面から「パーマリンク設定の変更を保存する」だけです。
手順は次の通りです:
WordPress管理画面にログインします。
「設定」→「パーマリンク設定」に移動します。
パーマリンク設定ページの一番下にある「変更を保存」をクリックします(何も変更しなくても、保存するだけでOKです)。
なぜこの作業が必要なのか?
WordPressでは、カスタム投稿タイプを新規に追加した際に、パーマリンク構造が自動で更新されないことが原因で、404エラー(ページが見つからない)になることがあります。パーマリンク設定を保存することで、WordPressは内部的にリライトルールを更新し、新しく追加したカスタム投稿タイプのURLを正しく認識できるようになります。
実際、これを忘れると「ページが見つかりません(404エラー)」が表示され、カスタム投稿タイプにアクセスできなくなります。保存をするだけで、この問題が解決されるため、忘れずに行いましょう。
他の解決策としてのflush_rewrite_rules関数
コードを使った別の方法として、flush_rewrite_rules関数を使用する方法もあります。flush_rewrite_rulesは、WordPressのリライトルールを手動でリセットするための関数です。通常はカスタム投稿タイプを初期設定する際に、functions.phpに記述することで自動的にリライトルールを更新します。
以下はそのサンプルコードです:
function my_custom_post_type() {
register_post_type('custom_post',
array(
'labels' => array(
'name' => __('Custom Posts'),
),
'public' => true,
'has_archive' => true,
)
);
flush_rewrite_rules(); // リライトルールを更新
}
add_action('init', 'my_custom_post_type');
flush_rewrite_rules()をregister_post_type()関数の後に挿入することで、カスタム投稿タイプが追加される度にリライトルールが更新されます。しかし、これは開発段階で一度実行すれば良いもので、サイトが本稼働している状態で頻繁に使うべきではありません。なぜなら、リライトルールを毎回リセットすることはサーバーに負担をかけ、パフォーマンスに影響を与える可能性があるからです。
まとめ:パーマリンクの更新で解決!
カスタム投稿タイプを追加した後、ページが表示されない場合の解決策はとてもシンプルです。まずは、パーマリンク設定を保存することでリライトルールが更新され、カスタム投稿タイプが正常に機能するようになります。もしこれでも解決しない場合は、flush_rewrite_rules()を使ったリライトルールの手動更新を試してみましょう。
どちらの方法も非常に簡単ですので、カスタム投稿が表示されないというトラブルに見舞われたら、まずは試してみてください!