wp_safe_redirect() WP 2.3.0

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

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

Якщо хост не дозволений, то користувача перенаправить на http://example.com/wp-admin замість зазначеного посилання. За допомогою такого підходу можна захистити користувачів від потрапляння на небезпечний сайт.

Список дозволених хостів може бути розширений плагінами, див хук allowed_redirect_hosts .

За замовчуванням у дозволені хости WP входить лише поточний хост (домен) сайту.

Це init .

Заміна функції (перевизначення) — у плагіні можна створити функцію з такою самою назвою, тоді вона замінить поточну функцію.

Працює на основі:
wp_redirect() ,
wp_sanitize_redirect() ,
wp_validate_redirect()

Хуки з функції

Повертає

true|false. Нічого не вертає.

Використання

wp_safe_redirect($location, $status);
exit;
$location
(рядок) (обов’язковий)
URL перенаправлення.
$status
(число)
Статус перенаправлення.


За замовчуванням: 302

Приклади

0

#1 Безпечний перенапрямок

Уявімо, що посилання для перенаправлення ми передаємо функції wp_safe_redirect() і змінюється залежно від дій користувача, тобто. може бути завжди різною. А нам потрібно зробити так, щоб перенаправлення було лише на внутрішні сторінки сайту. Нам допоможе такий код:

if( isset( $_POST['location'] ) && $location = $_POST['location'] ){
	wp_safe_redirect($location);
	exit;
}

список змін

З версії 2.3.0Введено.
З версії 5.1.0Return value from wp_redirect() is now pased on, and the $x_redirect_by parameter був added.

Код wp_safe_redirect() WP 6.0.2

function wp_safe_redirect( $location, $status = 302, $x_redirect_by = 'WordPress' ) {

	// Потрібно бачити на URL-адресу, як вона буде закінчуватися в wp_redirect().
	$location = wp_sanitize_redirect($location);

	/**
	 * Filters redirect fallback URL для якщо надісланий redirect is not safe (local).
	 *
	 * @ Since 4.3.0
	 *
	 * @param string $fallback_url Залишити URL-адресу для використання у разі необхідності.
	 * @param int $status HTTP response status code to use.
	 */
	$location = wp_validate_redirect( $location, apply_filters( 'wp_safe_redirect_fallback', admin_url(), $status ) );

	return wp_redirect($location, $status, $x_redirect_by);
}