wp_safe_redirect

Безопасное перенаправление. Перенаправляет с помощью wp_redirect() предварительно проверив хост на наличие в базе разрешенных хостов.

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

Список разрешенных хостов может быть расширен плагинами (функция wp_validate_redirect()).

Если хост не разрешен, то пользователя перенаправит на http://site.ru/wp-admin, вместо указанной ссылки. С помощью такого подхода можно оградить пользователей от попадания на небезопасный сайт.

Хуки из функции:
wp_safe_redirect_fallback
Возвращает

Ничего не возвращает.

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

wp_safe_redirect( $location, $status );
exit;
$location(строка) (обязательный)
URL перенаправления.
$status(число)
Статус перенаправления.
По умолчанию: 302

Примеры

#1 Безопасное перенаправление

Представим, что ссылку для перенаправления мы передаем функции wp_safe_redirect() и она меняется в зависимости от действий пользователя, т.е. может быть всегда разной. А нам нужно сделать так, чтобы перенаправление было только на внутренние страницы сайта. Нам поможет такой код:

<?php
function wp_safe_redirect($location, $status = 302) {

	// Need to look at the URL the way it will end up in wp_redirect()
	$location = wp_sanitize_redirect($location);

	/**
	 * Filters the redirect fallback URL for when the provided redirect is not safe (local).
	 *
	 * @since 4.3.0
	 *
	 * @param string $fallback_url The fallback URL to use by default.
	 * @param int    $status       The redirect status.
	 */
	$location = wp_validate_redirect( $location, apply_filters( 'wp_safe_redirect_fallback', admin_url(), $status ) );

	wp_redirect($location, $status);
}