wp_safe_redirect()
Безпечне перенаправлення. Перенаправляє за допомогою wp_redirect() попередньо перевіривши хост на наявність у базі дозволених хостів.
Перш ніж перенаправити на зазначений хост, функція перевіряє його і перенаправлення відбудеться лише в тому випадку, якщо хост є в базі дозволених хостів.
Якщо хост не дозволений, то користувача перенаправить на http://example.com/wp-admin замість зазначеного посилання. За допомогою такого підходу можна захистити користувачів від потрапляння на небезпечний сайт.
Список дозволених хостів може бути розширений плагінами, див хук allowed_redirect_hosts .
За замовчуванням у дозволені хости WP входить лише поточний хост (домен) сайту.
Це init .
Заміна функції (перевизначення) — у плагіні можна створити функцію з такою самою назвою, тоді вона замінить поточну функцію.
Хуки з функції
Повертає
true|false
. Нічого не вертає.
Використання
wp_safe_redirect($location, $status); exit;
-
$location
(рядок) (обов’язковий) - URL перенаправлення.
-
$status
(число) -
Статус перенаправлення.
За замовчуванням: 302
Приклади
#1 Безпечний перенапрямок
Уявімо, що посилання для перенаправлення ми передаємо функції wp_safe_redirect() і змінюється залежно від дій користувача, тобто. може бути завжди різною. А нам потрібно зробити так, щоб перенаправлення було лише на внутрішні сторінки сайту. Нам допоможе такий код:
if( isset( $_POST['location'] ) && $location = $_POST['location'] ){ wp_safe_redirect($location); exit; }
список змін
З версії 2.3.0 | Введено. |
З версії 5.1.0 | Return value from wp_redirect() is now pased on, and the $x_redirect_by parameter був added. |
Код wp_safe_redirect() 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); }