wp_referer_field()WP 2.0.4

Выводит/получает скрытое input поле формы со значением URI текущей страницы (referer).

Ссылка referer — это URI текущего запроса — $_SERVER['REQUEST_URI']. Атрибут name равен _wp_http_referer.

<input type="hidden" name="_wp_http_referer" value="/current-page" />

Хуков нет.

Возвращает

Строку. HTML тег <input>.

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

wp_referer_field( $echo );
$echo(логический)
true — вывести на экран. false — возвратить в переменную для дальнейшей обработки.
По умолчанию: true

Примеры

0

#1 Редирект обратно

// Есть операция
if ( $doaction ) {
	// делаем что-либо
}
// Нет операции, вернем пользователя обратно
elseif ( ! empty($_REQUEST['_wp_http_referer']) ) {
	 wp_safe_redirect( $_REQUEST['_wp_http_referer'] );
	 exit;
}
0

#2 Добавим скрытое поле _wp_http_referer и проверим его

Добавим в нашу форму скрытое поле _wp_http_referer и затем проверим это поле, чтобы убедится, что запрос пришел именно с нужной нам страницы. Пусть, страница с формой имеет УРЛ: /my-page, тогда:

<form action="/proverka" method="post">
	... другие поля формы ...
	<?php wp_referer_field() ?>
	... кнопка отправки формы ...
</form>

wp_referer_field() выведет:

<input type="hidden" name="_wp_http_referer" value="/my-page" />

Теперь, после того как мы отправим данные они уйдут на страницу /proverka, где мы сможет проверить поле _wp_http_referer так:

if( $_POST['_wp_http_referer'] === '/my-page' ){
	// Проверка пройдена, делаем что-то с данными
}
else {
	// Проверка не пройдена!
}

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

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

Код wp_referer_field() WP 6.5.2

function wp_referer_field( $display = true ) {
	$request_url   = remove_query_arg( '_wp_http_referer' );
	$referer_field = '<input type="hidden" name="_wp_http_referer" value="' . esc_url( $request_url ) . '" />';

	if ( $display ) {
		echo $referer_field;
	}

	return $referer_field;
}