旅インプットファイナンス時事ネタその他GRAYCODEについてお問い合わせプライバシーポリシーサイトポリシーBLOGfacebookTweethatenaline2016.06.25WordPressカスタム投稿タイプのページが404エラーで表示されないときの対処法WordPressでカスタム投稿タイプを設定してページを開いても、404エラーが表示されてしまうことがあります。他のカスタム投稿タイプは問題なく表示されているから、URLは正しいはず。そんなときの解決方法を解説します。現象WordPressを運用していて、あるタイミングでカスタム投稿タイプを追加することになりました。カスタム投稿タイプ「カスタムA」を設定していて、そこへ新しく「カスタムB」を追加する形です。functions.phpへ設定を追記してサーバーへアップロード。新しいカスタム投稿タイプへ投稿を登録し、URLを開く。404エラーで表示されません。ページが存在しないことになっています。おかしいと思い、もともとあったカスタムAを確認してみたら、こちらは正常に表示されます。解決方法と原因functions.phpのどこでもいいので、次の2行を追記して実行したところ解決しました。$wp_rewrite;$wp_rewrite->flush_rules();原因はWordPressがURL構造をデータベースに保持していて、こちらに追加したカスタム投稿タイプのURLが存在していないことでした。そのため、上記の関数で一旦リセットする必要があったということです。これで新しいカスタム投稿タイプを含めたURL構造が登録され、ページも正常に表示されるようになります。一度実行したら、上記のコードは削除しても大丈夫です。今回はカスタム投稿タイプの設定がある流れでfunctions.phpからflush_rules関数を呼び出していますが、実は$wp_rewriteが呼び出せればどこでも構いません。header.phpやfooter.phpでも大丈夫です。解決までのプロセスカスタム投稿タイプのページが表示されないので、おかしいと思って次の3点を確認しました。他のカスタム投稿タイプは正常に表示されている(カスタムA)カスタム投稿タイプと同じスラッグ名を他の場所で使用していないかカスタム投稿タイプの設定が正しいか確認まずは設定しているコードに問題がないか確認します。今回はプラグインを使用せず、functions.phpから設定。次のコードがカスタム投稿タイプの設定に該当します。'投稿が見つかりませんでした。'ゴミ箱内に投稿が見つかりませんでした。'投稿が見つかりませんでした。'ゴミ箱内に投稿が見つかりませんでした。'new_custom_post_type');こちらのコードでは2つのカスタム投稿タイプを設定していますが、新しく追加した「カスタムB」は「カスタムA」を複製し、ラベルなどを書き換えたものになります。他のカスタム投稿タイプは正常に表示されている(カスタムA)次に、カスタムAが表示されているかを確認します。上記の設定コードは正常に動作するはず、ということになります。カスタム投稿タイプと同じスラッグ名を他の場所で使用していないか他の場所で同じスラッグ名を使っている可能性も考え、年のためチェックしました。通常投稿のカテゴリーや固定ページのURLを確認しましたが、重複はなく問題なさそうです。上記3点に問題がないということは、パーマリンクがどこかにキャッシュ(一時的に記憶)されている可能性を考えました。そこで検索をしてみたら、WordPressCodexの「WP_Rewrite」ページへ辿り着きます。こちらの「WP_Rewriteの役割」を読むと、「内部的にはリライトルールを更新するためや、特定の投稿やページ、カテゴリーアーカイブなどのURLを特定するためなどに使われています。そこで関数(メソッド)を見ていたら、上記のflush_rewrites関数を見つけたのでした。実行してみたら、確かに解決。以上が問題解決までの流れでした。こちらの記事は役に立ちましたか?GoodBadありがとうございます。よろしければ、あわせてフィードバックや要望などをご入力ください。コメント送信コメントありがとうございます!運営の参考にさせていただきます。)PHP2019-11-16フォームの基本構造を作成するPHP2019-11-16はしご高など旧字体漢字の文字化けを防ぐRECOMMEND遅いインターネット評論家の宇野常寛の新著。2018年頃から提唱されている「インターネットによって失った未来をインターネットによって取り戻す」をテーマにした本書が、いよいよ2月20日から書店に並びます。宇野さんがずっと温めてきた構想が詰まった1冊なので、個人的に非常に楽しみにしている一冊です。