Функция wp_redirect()
в WordPress позволяет перенаправлять пользователя на указанный URL с возможностью указания HTTP-статуса, такого как 301 (перемещено навсегда) или 302 (перемещено временно). Она полезна для создания перенаправлений при разработке плагинов или тем.
Примечание:
wp_redirect()
не завершает выполнение скрипта, поэтому обычно после её вызова используетсяexit()
.
wp_redirect( string $location, int $status = 302, string|false $x_redirect_by = 'WordPress' ): bool
Параметры:
- $location (строка, обязательный): URL-адрес для перенаправления.
- $status (целое число, необязательный): HTTP-статус перенаправления. По умолчанию
302
. - $x_redirect_by (строка|false, необязательный): Источник перенаправления. Добавляет заголовок
X-Redirect-By
с идентификатором (например, ‘MyPlugin’).
Возвращает: Логическое значение: true
, если перенаправление выполнено, иначе — false
.
Важное примечание
wp_redirect()
не проверяет, принадлежит ли указанный URL текущему хосту, что может привести к уязвимостям открытых редиректов. Поэтому рекомендуется использовать wp_safe_redirect()
для безопасных перенаправлений внутри сайта, поскольку эта функция проверяет URL.
Пример 1. Перенаправление на главную страницу блога
Этот пример перенаправит пользователя на домашнюю страницу блога:
wp_redirect( home_url() );
exit;
Пример 2. Внешний редирект с кодом 301 (постоянное перенаправление)
Если необходимо перенаправить на внешний URL и указать, что страница перемещена навсегда, используется статус 301:
wp_redirect( 'https://www.example.com/new-page', 301 );
exit;
Пример 3. Перенаправление на страницу-родителя
Можно перенаправить пользователя на страницу-родителя для вложенной страницы или вложенного поста:
wp_redirect( get_permalink( $post->post_parent ) );
exit;
Пример 4. Перенаправление через хук template_redirect
Этот код демонстрирует, как можно перенаправить пользователей на другую страницу, если они посещают определённый контент. Допустим, нужно перенаправить пользователя со страницы с ID 10
на страницу подписки:
add_action( 'template_redirect', function() {
if ( is_page(10) ) {
wp_redirect( 'https://example.com/subscribe', 301 );
exit;
}
});
Пример 5. Отключение кеширования при редиректе
Если браузер пользователя кэширует перенаправление, это может создать проблемы. Например, если пользователь перенаправлен на страницу входа при попытке доступа к защищённому контенту, после входа он может снова увидеть страницу входа. Чтобы избежать этого, перед редиректом можно добавить nocache_headers();
:
nocache_headers();
wp_redirect( home_url( '/login' ) );
exit;
Заключение
Функция wp_redirect()
— мощный инструмент для управления перенаправлениями в WordPress. Используйте его вместе с exit()
и с осторожностью, чтобы избежать кэширования браузером. Если URL может быть задан пользователем, предпочтительнее использовать wp_safe_redirect()
.