ワードプレスのwp_get_raw_referer関数の使用方法・解説

概要

wp_get_raw_referer関数は、バリデーションしていないリファラーを取得するために使用されます。この関数は主に、リファラーに基づいて、特定の動作を条件に応じて変更したい場合に利用されることが多く、以下のようなシナリオで役立ちます。

  1. リダイレクト先のURLを決定するため
  2. ユーザーの訪問履歴をトラッキングするため
  3. バックボタンの動作をカスタマイズするため
  4. フォームの送信先を動的に変更するため
  5. 特定のページからの遷移を確認するため
  6. セキュリティの観点から、リファラーを使ったアクセス制御を行うため
  7. アナリティクスデータへのアクセス元を判断するため
  8. ユーザー体験を改善するための機能を実装する際

構文

string wp_get_raw_referer();

パラメータ

この関数はパラメータを持たず、呼び出すだけで使用できます。

戻り値

リファラーのURLが文字列で返されます。リファラーが存在しない場合は空の文字列が返されます。

関連する関数

  • wp_get_referer
  • wp_send_referer
  • get_referer
  • wp_redirect

使用可能なバージョン

この関数はWordPress 2.8.0以降で使用可能です。

コアファイルのパス

wp-includes/pluggable.php

サンプルコード

サンプルコード 1

$referer = wp_get_raw_referer();
if ( ! empty( $referer ) ) {
    echo '前のページは: ' . esc_html( $referer );
}

このコードは、リファラーが存在する場合にそのURLを取得し、HTMLエスケープして表示します。

サンプルコード 2

add_action( 'template_redirect', function() {
    $referer = wp_get_raw_referer();
    if ( strpos( $referer, 'example.com' ) !== false ) {
        // 特定のリファラーからのアクセスを許可する処理
    }
});

このコードは、特定のリファラー(example.com)からのアクセスを条件に処理を実行します。

サンプルコード 3

function my_custom_redirect() {
    $referer = wp_get_raw_referer();
    if ( empty( $referer ) ) {
        wp_redirect( home_url() );
        exit;
    }
}
add_action( 'init', 'my_custom_redirect' );

このコードは、リファラーが空の場合、自サイトのホームページへリダイレクトします。

サンプルコード 4

$referer = wp_get_raw_referer();
if ( ! empty( $referer ) && wp_validate_redirect( $referer ) ) {
    // リファラーが安全なURLの場合の処理
}

このコードは、リファラーが存在し、かつ安全であると確認された場合に特定の処理を実行します。

サンプルコード 5

add_action( 'wp_loaded', function() {
    $referer = wp_get_raw_referer();
    // ログにリファラーを記録する
    error_log( 'リファラー: ' . $referer );
});

このコードは、ページがロードされたときにリファラーをログに記録します。

この関数のアクションでの使用可能性

アクション名 使用可能性
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

非推奨または削除されたバージョン

この関数は特定のバージョンで非推奨または削除されたことはありません。

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


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