wp_get_referer()WP 2.0.4

Получает реферер ссылку (referer URL), только если это внутренний URL - URL текущего сайта.

Вернет false, если реферер равен текущей странице.

Эта функция — это объединение двух функций: wp_get_raw_referer() и wp_validate_redirect().

Реферер ссылка (URL) — это URL адрес страницы, с которой пользователь пришел на текущую страницу.

Работает на основе: wp_get_raw_referer(), wp_validate_redirect()
1 раз — 0.001678 сек (очень медленно) | 50000 раз — 2.26 сек (быстро) | PHP 7.0.32, WP 5.1.1

Хуков нет.

Возвращает

Строку|false. Реферер URL или false.

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

$referer = wp_get_referer();

Примеры

0

#1 Выведем ссылку «Вернуться назад»

Допустим мы в админке сайта перешли по ссылке на страницу нашего плагина и нам нужно на этой странице среди прочего вывести ссылку «Вернуться назад».

Решение такой задачи может выглядеть так:

<?php
$referer_url = wp_get_referer()

if( $referer_url ){
	?>
	<p><a class="button" href="<?php echo esc_url( $referer_url ); ?>">Вернуться назад</a></p>
	<?php
}

Тут надо заметить, что такая ссылка будет показана, только если на страницу зашли с другой страницы. Но если на этой же странице, например, обновить данные формы, то реферер будет равен текущему URL и ссылка «Вернуться назад» не будет выведена. В этом случае, чтобы ссылка «Вернуться назад» работала как нужно, её надо куда-то сохранить при первом посещении страницы (например в транзитные опции) и при совпадении URL брать от туда.

0

#2 Что выводит функция

echo wp_get_referer(); // /some-page?foo=bar

Список изменений

С версии 2.0.4 Введена.

Код wp_get_referer() WP 6.4.3

function wp_get_referer() {
	// Return early if called before wp_validate_redirect() is defined.
	if ( ! function_exists( 'wp_validate_redirect' ) ) {
		return false;
	}

	$ref = wp_get_raw_referer();

	if ( $ref && wp_unslash( $_SERVER['REQUEST_URI'] ) !== $ref
		&& home_url() . wp_unslash( $_SERVER['REQUEST_URI'] ) !== $ref
	) {
		return wp_validate_redirect( $ref, false );
	}

	return false;
}