wp_get_referer()

Извлекает реферера из '_wp_http_referer' или HTTP-реферера
Функция WordPress
INT 2.0.4
WordPress Icon

Описание функции

Функция wp_get_referer() используется для получения URL-адреса, с которого был сделан запрос на текущую страницу. Она извлекает значение из переменной _wp_http_referer или из HTTP заголовка referer.

Функция полезна, когда требуется получить информацию о предыдущей странице, с которой пользователь перешел на текущую страницу. Например, это может быть полезно для создания ссылок «Назад» или для отслеживания источника трафика.

Использование

wp_get_referer(): string|false

Вызов функции wp_get_referer() возвращает строку с URL-адресом предыдущей страницы или false в случае неудачи.

Функция возвращает URL-адрес предыдущей страницы в виде строки в случае успеха или false в случае неудачи.

Примеры использования

Получение реферера при успешной отправке формы


if ( 'POST' === $_SERVER['REQUEST_METHOD'] ) {
    // Получаем реферера с помощью функции wp_get_referer()
    $referer = wp_get_referer();
    
    if ( $referer ) {
        // Реферер найден, выполняем необходимые действия
        // ...
    } else {
        // Реферер не найден, обрабатываем ошибку
        // ...
    }
}

В данном примере мы проверяем, является ли текущий запрос методом POST. Если да, то мы вызываем функцию wp_get_referer() для получения реферера. Если реферер найден, мы выполняем необходимые действия, иначе обрабатываем ошибку.

Проверка реферера перед выполнением действия


function my_custom_action() {
    // Получаем реферера с помощью функции wp_get_referer()
    $referer = wp_get_referer();
    
    if ( $referer && strpos( $referer, 'example.com' ) !== false ) {
        // Реферер содержит 'example.com', выполняем необходимые действия
        // ...
    } else {
        // Реферер не содержит 'example.com', обрабатываем ошибку
        // ...
    }
}
add_action( 'my_custom_hook', 'my_custom_action' );

В этом примере мы создаем пользовательское действие с помощью функции add_action(). Внутри этого действия мы вызываем функцию wp_get_referer() для получения реферера и проверяем, содержит ли реферер указанный домен ‘example.com’. Если содержит, мы выполняем необходимые действия, иначе обрабатываем ошибку.

Перенаправление на реферер после авторизации


function my_login_redirect( $redirect_to, $request, $user ) {
    // Получаем реферера с помощью функции wp_get_referer()
    $referer = wp_get_referer();
    
    if ( $referer ) {
        // Реферер найден, перенаправляем на него
        return $referer;
    } else {
        // Реферер не найден, перенаправляем на главную страницу
        return home_url();
    }
}
add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );

В данном примере мы создаем фильтр login_redirect с помощью функции add_filter(). Внутри этого фильтра мы вызываем функцию wp_get_referer() для получения реферера. Если реферер найден, мы перенаправляем пользователя на него, иначе перенаправляем на главную страницу.

Использование реферера для установки значения поля ввода


<form action="example.php" method="post">
    <input type="hidden" name="referer" value="<?php echo esc_url( wp_get_referer() ); ?>">
    <input type="submit" value="Submit">
</form>

В этом примере мы создаем форму с помощью тега <form>. Внутри формы мы добавляем скрытое поле ввода с именем «referer» и значением, полученным с помощью функции wp_get_referer(). Значение реферера будет передано на сервер при отправке формы.

Получение реферера из AJAX-запроса


jQuery.ajax({
    url: 'example.php',
    type: 'POST',
    data: {
        action: 'my_ajax_action',
        referer: document.referrer
    },
    success: function( response ) {
        // Обработка успешного ответа
        // ...
    },
    error: function( xhr, status, error ) {
        // Обработка ошибки
        // ...
    }
});

В данном примере мы отправляем AJAX-запрос с помощью функции jQuery.ajax(). Внутри запроса мы передаем дополнительные данные, включая реферер, который получаем с помощью свойства document.referrer. Реферер будет доступен на сервере в параметре $_POST[‘referer’].

Вопросы и ответы

Как получить referer из ‘_wp_http_referer’?

Функция wp_get_referer() используется для извлечения referer из ‘_wp_http_referer’.

Пример кода:


$referer = wp_get_referer();

Как получить referer из HTTP referer?

Функция wp_get_referer() также может извлечь referer из HTTP referer.

Пример кода:


$referer = wp_get_referer();

Что возвращает функция wp_get_referer()?

Функция wp_get_referer() возвращает referer URL в виде строки в случае успеха и false в случае ошибки.

Пример кода:


$referer = wp_get_referer();
if ( $referer ) {
    echo 'Referer: ' . $referer;
} else {
    echo 'Failed to retrieve referer.';
}

Как обработать ситуацию, когда функция wp_get_referer() возвращает false?

Если функция wp_get_referer() возвращает false, можно выполнить дополнительные действия для обработки этой ситуации.

Пример кода:


$referer = wp_get_referer();
if ( $referer ) {
    echo 'Referer: ' . $referer;
} else {
    echo 'Failed to retrieve referer.';
    // Дополнительные действия при ошибке.
}

Как использовать полученный referer URL в WordPress?

Функция wp_get_referer() возвращает URL-адрес, с которого была выполнена текущая страница. Для использования полученного referer URL в WordPress, нужно вызвать функцию wp_get_referer() и сохранить результат в переменную:

$referer = wp_get_referer();

Полученный URL-адрес можно использовать для различных целей, например, для редиректа пользователя обратно на страницу, с которой он пришел:

wp_redirect( $referer );

Какие данные содержит referer URL, полученный с помощью функции wp_get_referer()?

Функция wp_get_referer() возвращает строку с URL-адресом referer или false в случае ошибки. Результат может содержать полный URL-адрес страницы, с которой пользователь пришел на текущую страницу, включая протокол (http:// или https://), доменное имя, путь и параметры запроса.

Какие могут быть причины, по которым функция wp_get_referer() возвращает false?

Функция wp_get_referer() может вернуть false в следующих случаях:

  • Если referer URL не был установлен или не был передан в запросе.
  • Если referer URL был изменен или удален в процессе обработки запроса.
  • Если функция вызывается вне контекста HTTP-запроса, например, при выполнении скрипта из командной строки.

Какие альтернативы функции wp_get_referer() существуют в WordPress?

В WordPress также доступны следующие альтернативы для получения referer URL:

  • Глобальная переменная $_SERVER['HTTP_REFERER'] содержит referer URL, но ее использование не рекомендуется из-за возможности подделки данных.
  • Функция wp_get_raw_referer() возвращает referer URL без обработки и фильтрации данных.

Функция wp_get_referer() возвращает referer URL, с которого была выполнена текущая страница. Полученный URL-адрес можно использовать для редиректа пользователя или для других целей. Следует учитывать возможность возвращения false в случае ошибки или отсутствия referer URL. В таких случаях можно использовать альтернативные методы получения referer URL, такие как глобальная переменная $_SERVER['HTTP_REFERER'] или функция wp_get_raw_referer().

Связанные элементы

  • Функция wp_get_raw_referer(): Возвращает HTTP-заголовок Referer без обработки.
  • Функция wp_get_original_referer(): Возвращает оригинальный URL-адрес Referer из ‘_wp_original_http_referer’.
  • Функция wp_referer_field(): Выводит поле формы с URL-адресом Referer.
Обсуждение