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;
ホームページの制作(デザイン・コーディング・プログラミング)に加え、ネットショップの販売促進に関するアドバイスも致します。 20年以上に渡って実際にネットショップを運営した経験を生かし、聞きかじりではない実績を伴ったノウハウを、自分の言葉でお伝えいたします。 プログラミングの経験は30年以上。HTML、CSS、JavaScript、TypeScript、Vue、NuxtJS、Node.js、MySQL、MongoDB、Elasticsearch、WordPress、PHP、Docker、Electronなど、幅広く対応します。
コメント