wp_nonce_ays()WP 2.0.4

Останавливает выполнение сценария PHP и выводит заглушку "The link you followed has expired" со ссылкой на предудущую страницу wp_get_referer().

Использовать эту функцию можно в случаях, когда нужно остановить выполнение сценария и вернуть пользователя на предыдущую страницу (HTTP referer).

Код состояния HTTP создаваемой страницы заглушки: 403 - запрещено.

Возвращает

null. Ничего не возвращает, а прерывает текущий PHP сценарий заглушкой.

Хуков нет.

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

<?php wp_nonce_ays( $action ) ?>
$action(строка) (обязательный)
Если передать значение log-out, то будет показана заглушка выхода из системы, со ссылкой на выход: "Вы уверены, что хотите выйти".

Примеры

0

#1 Неправильная ссылка

В случае неправильного URL можно вернуть пользователя обратно. Используем такую логику:

global $wp;
$current_url = home_url( $wp->request );

// если $current_url "неправильный"
if( $current_url === "https://example.com/destroy/the/world" ){
	wp_nonce_ays( 'any string' );
	// останавливаем сценарий со ссылкой на предыдущую страницу
} else {
	// URL верный, выполняем сценарий дальше
}
0

#2 Подтверждение выхода

Если нужно предупредить пользователя, что он собирается выйти из системы, то используем такой код, до того как "разлогинить" пользователя:

if( $_GET['logout'] ){
	wp_nonce_ays( 'log-out' );
}

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

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

Код wp_nonce_ays() WP 6.8.1

function wp_nonce_ays( $action ) {
	// Default title and response code.
	$title         = __( 'An error occurred.' );
	$response_code = 403;

	if ( 'log-out' === $action ) {
		$title = sprintf(
			/* translators: %s: Site title. */
			__( 'You are attempting to log out of %s' ),
			get_bloginfo( 'name' )
		);

		$redirect_to = isset( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : '';

		$html  = $title;
		$html .= '</p><p>';
		$html .= sprintf(
			/* translators: %s: Logout URL. */
			__( 'Do you really want to <a href="%s">log out</a>?' ),
			wp_logout_url( $redirect_to )
		);
	} else {
		$html = __( 'The link you followed has expired.' );

		if ( wp_get_referer() ) {
			$wp_http_referer = remove_query_arg( 'updated', wp_get_referer() );
			$wp_http_referer = wp_validate_redirect( sanitize_url( $wp_http_referer ) );

			$html .= '</p><p>';
			$html .= sprintf(
				'<a href="%s">%s</a>',
				esc_url( $wp_http_referer ),
				__( 'Please try again.' )
			);
		}
	}

	wp_die( $html, $title, $response_code );
}