説明
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_redirect() | Function | WordPress Developer Resources

コメント