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

説明

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

コメント

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