【WordPress】カスタム投稿タイプの記事が表示されない(404エラー)時の解決方法

WordPressでカスタム投稿タイプを追加したけど記事が表示されない!なんだか、年がら年中こんな現象に悩まされている気がします(笑)

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()を使ったリライトルールの手動更新を試してみましょう。

どちらの方法も非常に簡単ですので、カスタム投稿が表示されないというトラブルに見舞われたら、まずは試してみてください!