ワードプレスのwp_validate_redirectフィルタの使用方法・解説

概要

wp_validate_redirectフィルタは、URLがリダイレクト先として有効か調べるためのフィルタです。このフィルタは、リダイレクトリンクが適切であるかどうかを検証する際に非常に役立ちます。例えば、ユーザーが特定の条件に基づいて異なるページにリダイレクトされるような状況で使用されます。このフィルタがよく使われる場面は以下の通りです:

  1. セキュリティ向上
  2. リダイレクトURLの正当性確認
  3. ユーザー体験の向上
  4. コンテンツ管理の向上
  5. プラグインやテーマのリダイレクト設定
  6. 404エラーページのリダイレクト改善
  7. パラメータ付きURLの管理
  8. 外部リダイレクトのフィルタリング

構文

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/

この関数について質問する


上の計算式の答えを入力してください