wp_redirect()
Перенаправляє (редиректит) на вказаний УРЛ, можна вказати статус редиректу (301, 302…).
Для правильної роботи функції необхідно вказувати повний УРЛ:
http://www.example.com/blog/post_name ftp://ftp.example.com/users/h/harriet/www/
Після функції потрібно обривати роботу скрипта функцією exit() чи die() .
У WordPress є аналогічна функція для редагування: allowed_redirect_hosts .
ВАЖЛИВО! wp_safe_redirect() рекомендується використовувати завжди , особливо коли $url передається користувачем.
Тоді як цю функцію потрібно використовувати, коли ми навмисно хочемо перенаправити користувача на інший сайт, як правило, тут $url жорстко прописується в коді, а не передається користувачем.
// ми точно не знаємо вказану URL на наш сайт чи ні і нам потрібно уникнути несподіваних редиректів. wp_safe_redirect($url); // ми навмисно перенаправляємо інший сайт, URL прописуємо жорстко. wp_redirect( 'https://example.com/some/page');
Функція викликає PHP помилку (Output already started. Headers not sent.), якщо використовувати функцію після того, як заголовки (header) були надіслані. Тобто. якщо ми викличемо функцію у файлі теми, що відповідає за виведення контенту, функція працювати не буде. У таких випадках, як альтернатива, можна використовувати редирект на javascript:document.location.href = 'http://example.com';
Це init .
Заміна функції (перевизначення) — у плагіні можна створити функцію з такою самою назвою, тоді вона замінить поточну функцію.
wp_safe_redirect()
Хуки з функції
Повертає
true|false
.
Використання
wp_redirect($location, $status); exit;
-
$location
(рядок) (обов’язковий) - УРЛ сторінки, на яку потрібно перенаправити.
-
$status
(число) Статус код перенаправлення (код стану HTTP):
- 300 – Multiple Choices (Багато виборів);
- 301 – Moved Permanently (Переміщено остаточно);
- 302 – Found (Знайдено);
- 303 – See Other (Дивитись інше);
- 304 – Not Modified (Не змінювалося);
- 305 – Use Proxy (Використовувати проксі);
- 306 – (зарезервовано);
- 307 – Temporary Redirect (Тимчасовий перенаправлення).
Статус 302 означає тимчасову зміну адреси. Якщо роботу потрібно вказати, що сторінку переміщено назавжди, використовуйте статус — 301. Повний список статусів дивіться тут .
За замовчуванням: 302
-
$x_redirect_by
(рядок) Інтентифікатор того, хто зробив редирект. Дозволяє плагінам вказувати себе у редиректах.
Вказаний тут рядок буде додано до заголовка
X-Redirect-By
відповіді редиректу. Пр:X-Redirect-By: WordPress
.Типово: ‘WordPress’
Приклади
#1 Внутрішній редирект
Приклад перенаправлення на головну сторінку блогу:
wp_redirect(home_url()); exit;
#2 Зовнішній редирект
Редирект може бути зовнішнім. У прикладі ми встановили статус код редиректу в 301, що означає, що ця сторінка (сторінка з якої ми перенаправляємо) переміщена назавжди:
wp_redirect ( 'http://www.example.com', 301); exit;
#3 Редирект через хук template_redirect
Цей приклад показує як WordPress перенаправити користувача на іншу сторінку, з можливістю перевірити на якій сторінці сайту він знаходиться зараз. Тобто. в момент редиректу WP вже визначив сторінку, що відображається.
Для прикладу, скажімо, нам потрібно перенаправити користувача, якщо він відвідав сторінку з ID 10:
add_action( 'template_redirect', function() { if( is_page(10) ){ wp_redirect ( 'http://example.org/path/to/subscribe', 301); exit; } } );
нотатки
- Global. true | false. $is_IIS
список змін
З версії 1.5.1 | Введено. |
З версії 5.1.0 | The $x_redirect_by parameter був added. |
З версії 5.4.0 | On invalid status codes, wp_die() is called. |