wp_safe_redirect()


WordPressのwp_safe_redirect()関数は、ユーザーを指定されたURLに安全にリダイレクトするために使用されます。この関数は、内部URLか外部URLかを自動的にチェックし、外部URLの場合にはデフォルトでリダイレクトを防ぎます。

構文

wp_safe_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' );

引数の説明:

  • $location (string) — リダイレクト先のURLを指定します。
  • $status (int) — リダイレクトのHTTPステータスコードを指定します。デフォルトは302です。
  • $x_redirect_by (string) — リダイレクトを実行したソースを指定します。デフォルトは’WordPress’です。

例1: 基本的なリダイレクト

この例では、ユーザーを特定のページにリダイレクトします。

wp_safe_redirect(home_url('/new-page/')); exit;

例2: カスタムステータスコードを使用したリダイレクト

この例では、HTTPステータスコード301を使用してリダイレクトします。

wp_safe_redirect(home_url('/new-page/'), 301); exit;

例3: 外部URLのリダイレクト

外部URLへのリダイレクトはデフォルトでブロックされますが、フィルターを使用して許可することができます。

add_filter('allowed_redirect_hosts', function($hosts) { $hosts[] = 'example.com'; return $hosts; }); wp_safe_redirect('https://example.com'); exit;

例4: ログイン後のリダイレクト

ユーザーがログインした後に特定のページにリダイレクトします。

add_action('wp_login', function() { wp_safe_redirect(home_url('/dashboard/')); exit; });

例5: ログアウト後のリダイレクト

ユーザーがログアウトした後にホームページにリダイレクトします。

add_action('wp_logout', function() { wp_safe_redirect(home_url()); exit; });

例6: カスタムリダイレクトヘッダーの設定

リダイレクトヘッダーにカスタム値を設定します。

wp_safe_redirect(home_url('/new-page/'), 302, 'CustomApp'); exit;

例7: 条件付きリダイレクト

特定の条件が満たされた場合にのみリダイレクトします。

if (is_user_logged_in()) { wp_safe_redirect(home_url('/members/')); exit; }

例8: エラーページへのリダイレクト

エラーが発生した場合にエラーページにリダイレクトします。

if ($error_condition) { wp_safe_redirect(home_url('/error/')); exit; }

注意点

  • wp_safe_redirect()は、リダイレクト後にexitまたはdieを呼び出す必要があります。
  • 外部URLへのリダイレクトはデフォルトでブロックされますが、フィルターを使用して許可することができます。
  • リダイレクトの前に出力が行われていると、ヘッダーが既に送信されているためエラーが発生します。

関連機能: