概要
wp_safe_redirect
関数は、指定されたURLが有効か調べ、リダイレクトするための関数です。この関数は、特にセキュリティを考慮したリダイレクトを実装する際に利用されます。具体的には、以下のような状況で使用されることが一般的です。
- ユーザーがログイン後のリダイレクト
- サイトの別のページへのナビゲーション
- セキュリティ制限されたアクセスの制御
- 不正なリクエストからの保護
- URLの正当性を確認することでのエラー防止
- プラグイン設定の変更後のリダイレクト
- サイトメンテナンス中のユーザーガイダンス
- 特定の条件下でのユーザーエクスペリエンスの向上
構文
wp_safe_redirect( string $location, int $status = 302 );
パラメータ
$location
: リダイレクト先のURL。$status
: HTTPステータスコード(デフォルトは302)。
戻り値
この関数はリダイレクトを実行し、何も返さない(null)です。
関連する関数
使用可能なワードプレスのバージョン
この関数はWordPress 2.8以降で使用可能です。
コアファイルのパス
wp-includes/pluggable.php
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | 〇 |
register_sidebar | |
wp_loaded | 〇 |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | 〇 |
get_header | |
wp_head |
参考コードサンプル
-
基本的なリダイレクトの例
if ( ! is_user_logged_in() ) { wp_safe_redirect( home_url() ); exit; }
説明: ユーザーがログインしていない場合、ホームページにリダイレクトします。
-
特定のページにリダイレクトする例
function redirect_to_dashboard() { wp_safe_redirect( admin_url() ); exit; } add_action( 'admin_init', 'redirect_to_dashboard' );
説明: 管理画面の初期化時にダッシュボードにリダイレクトします。
-
エラーメッセージ付きのリダイレクト
function redirect_with_message() { if ( isset( $_GET['error'] ) ) { wp_safe_redirect( add_query_arg( 'message', 'error_message', home_url() ) ); exit; } } add_action( 'init', 'redirect_with_message' );
説明: エラーが発生した場合、メッセージ付きでホームページにリダイレクトします。
-
条件に基づくリダイレクト
function condition_based_redirect() { if ( current_user_can( 'administrator' ) ) { wp_safe_redirect( admin_url() ); exit; } } add_action( 'init', 'condition_based_redirect' );
説明: 管理者であれば管理画面にリダイレクトします。
-
外部サイトへのリダイレクトの例
function external_redirect() { wp_safe_redirect( 'https://www.example.com' ); exit; } add_action( 'template_redirect', 'external_redirect' );
説明: テンプレートのリダイレクト時に外部サイトへ移動します。