wp_safe_redirect():サイトの中の別のページへ移す(WordPress)

別のページへリダイレクトします。行き先が自分のサイトの中(許したドメイン)のときだけ移し、ほかのサイトへは移しません。利用者が入れた URL で移すときの守りになります。

書き方

wp_safe_redirect( string $location, int $status = 302, string|false $x_redirect_by = 'WordPress' ): bool
  • $location:行き先の URL
  • $status(省略できる):302(一時的)・301(ずっと)など
  • 行き先がほかのサイトのときは、代わりに管理画面(admin_url())へ移します。

使い方の例

// ログインしていない人を、会員ページからトップへ移す
add_action( 'template_redirect', function () {
	if ( is_page( 'members' ) && ! is_user_logged_in() ) {
		wp_safe_redirect( home_url( '/' ) );
		exit;
	}
} );

PHP の header() との違い

  • PHP だけなら header( 'Location: https://example.com/' ); exit; と書きますが、行き先を確かめません。WordPress の中では wp_safe_redirect() を使います。
  • ほかのサイトへ移したいとき(決まった外の URL)は wp_redirect() を使います。利用者が入れた値をそのまま渡さないようにします。

よくある間違い

  • exit; を書き忘れる:書かないと、そのあとの処理(ページの表示など)が続いてしまいます。
  • 画面に何か出したあとに呼ぶ:「Cannot modify header information」になります。template_redirect など、表示の前のフックで呼びます。
  • 許したいほかのドメインがあるときは、allowed_redirect_hosts のフィルターで足します。

関連する関数

  • wp_redirect():行き先を確かめずに移す
  • home_url():サイトの URL を作る
  • wp_validate_redirect():行き先がサイトの中かだけを確かめる
  • header() でのリダイレクト(PHP):WordPress を使わない PHP で別のページへ移す

逆引きリファレンスの一覧へ

サイドバー

よく使うカスタマイズ

最近の記事

  1. Fstyle Final Output Replacer のルールの一覧(generator タグを消す 2 つのルール)

Profile

PAGE TOP