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

説明

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

コメント

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