wp_redirect() の使い方|説明・引数・注意点

説明

wp_redirect() は、指定したURLにリダイレクトする関数です。

基本構文

wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' ): bool

引数

  • $location:リダイレクト先
  • $status:ステータスコード(301 / 302 など)
  • $x_redirect_by:ヘッダーに付ける名前

戻り値

リダイレクトできたら true。

使い方(サンプル)

wp_redirect( home_url( '/thanks/' ) );
exit;

注意点

  • 呼び出し後に必ず exit します。リダイレクトは自動では終了しません。
  • 自サイト内への遷移なら wp_safe_redirect() が安全です。
  • 出力(echo や空白)が始まった後だと動作しません。

実務での使いどころ

  • フォームの送信後に、サンクスページへ移動させるとき。
  • ログイン後や、権限がないときに、別のページへ移動させるとき。
  • 旧URLから新URLへの、301リダイレクト(template_redirect フックの中など)。

よくあるミスと対処

  • HTMLを出力したあとに呼んでいる。「headers already sent」の警告になり、リダイレクトされません。template_redirect や init などのフックの中で呼びます。
  • 呼び出した後に、exit を書いていない。後続の処理が実行され続けます。
  • ユーザー入力のURLへ、そのままリダイレクトしている。外部の悪意あるサイトへ誘導される、オープンリダイレクトの原因になります。wp_safe_redirect() を使います。
  • 恒久的な移転なのに、ステータスを指定していない。既定は302(一時的な移動)です。恒久的な移転では、301を指定します。

NG例

wp_redirect( $_GET['redirect_to'] ); // 入力されたURLへ移動し、exit もない

OK例

wp_safe_redirect( home_url( '/thanks/' ) );
exit;

使い分け早見表

関数 移動できる先
wp_redirect() 任意のURL(外部サイトも可)
wp_safe_redirect() 許可されたホスト(自サイトなど)のみ。許可されていないURLのときは、管理画面のURLへ移動する

関連項目

wp_safe_redirect()、home_url()

公式リファレンス:wp_redirect() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました