All posts
WordPressで強制的に404ページを表示する方法

WordPressのサイトにおいて、URLにパラメータを付与してページの出し分けをする場合に、不正なパラメータが指定されていたら404 Not foundを表示したいなと思いまして。
ググると出てくるのは、リダイレクトする方法ばかりなのですが、それだと404を出力したことにならないわけで、リダイレクトせず正しく404ページ(ステータスコードも含めて)を出力して、明確にページが存在しないことを示したいわけです。
いろいろ調べたところ、以下のphpコードを実行することで、希望の動作を実現できました。
global $wp_query;
$wp_query->set_404();
// ステータスコードを404に設定
status_header(404);
// ブラウザにキャッシュさせたくない場合は以下のメソッドを追加する
nocache_headers();
// 404ページのテンプレートに差し替える
include( get_query_template( '404' ) );
// exitを書かないと、続きが表示されてしまうので忘れずに書く
exit;



Discussion