説明
wp_validate_redirect() は、リダイレクト先のURLが、許可されたホスト(自サイトなど)かを、検証する関数です。許可されていなければ、代わりのURLを返します。wp_safe_redirect() が、内部で使います。
基本構文
wp_validate_redirect( string $location, string $fallback_url = '' ): string
引数
$location:検証するURL$fallback_url:許可されていないときに、返すURL(既定は空文字)
戻り値
許可されているときは、そのURL。許可されていないときは、$fallback_url。
使い方(サンプル)
$to = wp_validate_redirect( wp_unslash( $_GET['redirect_to'] ), home_url( '/' ) );
wp_redirect( $to );
exit;
注意点
- 許可されるのは、自サイトのホストと、
allowed_redirect_hostsフィルターで追加したホストです。 - 自サイト内だけでよいなら、
wp_safe_redirect()で足ります。
実務での使いどころ
- ユーザーの入力で決まる、リダイレクト先を、安全に、扱うとき。
よくあるミスと対処
$fallback_urlを、指定していない。許可されないとき、空文字が返り、移動先が決まらない。- 入力されたURLを、検証せずに、リダイレクトしている(オープンリダイレクト)。
NG例
wp_redirect( $_GET['redirect_to'] ); // 入力されたURLへ、そのまま移動する
OK例
$to = wp_validate_redirect( wp_unslash( $_GET['redirect_to'] ), home_url( '/' ) );
wp_safe_redirect( $to );
exit;
使い分け早見表
| 関数 | 役割 |
|---|---|
wp_validate_redirect() |
URLを、検証して、返す |
wp_safe_redirect() |
検証して、リダイレクトする |
wp_redirect() |
検証せずに、リダイレクトする |
関連項目
wp_safe_redirect()、wp_redirect()
公式リファレンス:wp_validate_redirect() | WordPress Developer Resources

コメント