概要
wp_validate_redirectフィルタは、URLがリダイレクト先として有効か調べるためのフィルタです。このフィルタは、リダイレクトリンクが適切であるかどうかを検証する際に非常に役立ちます。例えば、ユーザーが特定の条件に基づいて異なるページにリダイレクトされるような状況で使用されます。このフィルタがよく使われる場面は以下の通りです:
- セキュリティ向上
- リダイレクトURLの正当性確認
- ユーザー体験の向上
- コンテンツ管理の向上
- プラグインやテーマのリダイレクト設定
- 404エラーページのリダイレクト改善
- パラメータ付きURLの管理
- 外部リダイレクトのフィルタリング
構文
apply_filters( 'wp_validate_redirect', $location, $default );
パラメータ
$location(string) – リダイレクト先のURL。$default(string) – リダイレクトが無効な場合のデフォルトURL。
戻り値
- (string) – 検証されたURLまたはデフォルトURL。
関連する関数
このフィルタに関連する関数についての詳細は、こちらで確認できます。
使用可能なWordPressバージョン
このフィルタは、WordPressバージョン 2.8.0 から利用可能です。
コアファイルのパス
wp_validate_redirectフィルタは、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 |
サンプルコード
サンプルコード1: 簡単なリダイレクトチェック
このサンプルコードでは、リダイレクト先のURLが有効かどうか確認するためにwp_validate_redirectフィルタを使用します。
add_filter( 'wp_validate_redirect', function( $location ) {
if ( filter_var( $location, FILTER_VALIDATE_URL ) ) {
return $location;
}
return home_url();
});
引用元: https://developer.wordpress.org/reference/hooks/wp_validate_redirect/
サンプルコード2: 自ドメインのリダイレクトのみ許可
このサンプルでは、自分のドメインに対するリダイレクトのみを許可して、他のドメインへのリダイレクトを制限します。
add_filter( 'wp_validate_redirect', function( $location ) {
if ( strpos( $location, home_url() ) === false ) {
return home_url();
}
return $location;
});
引用元: https://developer.wordpress.org/reference/hooks/wp_validate_redirect/
サンプルコード3: URLのスラッグを追加する
この例では、リダイレクト先のURLに特定のスラッグを付加します。
add_filter( 'wp_validate_redirect', function( $location ) {
return rtrim( $location, '/' ) . '/my-custom-slug';
});
引用元: https://developer.wordpress.org/reference/hooks/wp_validate_redirect/
サンプルコード4: パラメータを追加する
リダイレクト先にクエリパラメータを追加するサンプルです。
add_filter( 'wp_validate_redirect', function( $location ) {
return add_query_arg( 'utm_source', 'example', $location );
});
引用元: https://developer.wordpress.org/reference/hooks/wp_validate_redirect/
サンプルコード5: HTTPSのみ許可
この例では、HTTPSリダイレクト先のみを許可します。
add_filter( 'wp_validate_redirect', function( $location ) {
if ( 'https://' !== substr( $location, 0, 8 ) ) {
return home_url();
}
return $location;
});
引用元: https://developer.wordpress.org/reference/hooks/wp_validate_redirect/