説明
wp_safe_redirect() は、許可されたホストへの、安全なリダイレクトを行う関数です。
基本構文
wp_safe_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' ): bool
引数
$location:リダイレクト先$status:ステータスコード$x_redirect_by:ヘッダーに付ける名前
戻り値
リダイレクトできたら true。
使い方(サンプル)
wp_safe_redirect( admin_url() );
exit;
注意点
- 許可されていないホストへは、管理画面に遷移します。
- ユーザー入力由来のURLにリダイレクトするときは、こちらを使います。
実務での使いどころ
- ユーザーの入力や、パラメータで決まる、URLへリダイレクトするとき(ログイン後の戻り先など)。
- 自サイト内の、ページへのリダイレクト。
よくあるミスと対処
- 呼び出した後に、
exitを書いていない。後続の処理が実行され続ける。 - 外部のサイトへ、移動できると考えている。許可されたホスト以外では、管理画面のURLへ移動する。外部を許可するには、
allowed_redirect_hostsフィルターで、追加する。 - HTMLを出力したあとに呼び、「headers already sent」になる。
NG例
wp_safe_redirect( $url ); // exit がなく、後続の処理が実行される
OK例
wp_safe_redirect( home_url( '/thanks/' ) );
exit;
使い分け早見表
| 関数 | 移動できる先 |
|---|---|
wp_safe_redirect() |
許可されたホスト(自サイトなど)のみ |
wp_redirect() |
任意のURL(外部サイトも可) |
wp_get_referer() |
直前のページのURLを取得する |
関連項目
wp_redirect()、wp_validate_redirect()
公式リファレンス:wp_safe_redirect() | Function | WordPress Developer Resources

コメント