Автоматический редирект в WordPress — частая задача, которую приходится решать при работе с сайтами. Например, нужно перенаправить пользователей с мобильных устройств на мобильную версию, или сделать редирект по роли пользователя, либо при определённых GET-параметрах. В этой статье разберём, как реализовать разные виды условных редиректов с помощью кода и плагинов, а также рассмотрим примеры с реальными задачами.
Почему важен автоматический редирект по условиям в WordPress
Редиректы помогают улучшить UX, оптимизировать трафик и SEO. Иногда нужно направить посетителя на нужную страницу без его участия. Например:
- Редирект с устаревших URL на новые;
- Перенаправление пользователей с определёнными ролями (например, подписчикам сразу в личный кабинет);
- Редирект мобильных пользователей на мобильную версию;
- Перенаправление по условию из GET-параметров, например, после заполнения формы;
- Редиректы для A/B тестирования.
Реализовать их можно разными способами — через плагины или код в functions.php. Далее рассмотрим и то, и другое.
Автоматический редирект с помощью плагинов
Если вы хотите быстро и просто настроить редиректы, подойдут плагины. Вот несколько популярных и удобных вариантов:
1. Redirection
Очень популярный плагин для управления редиректами. Позволяет создавать редиректы по URL, использовать регулярные выражения, условия и отслеживать 404 ошибки.
Особенности:
- Удобный интерфейс;
- Поддержка условных редиректов с помощью регулярных выражений;
- Логирование редиректов и ошибок.
Скачать и установить можно с официального репозитория WordPress или по ссылке: Redirection на WPShop.
2. Conditional Redirects
Плагин, который позволяет создавать редиректы на основе условий, например, роли пользователя, устройства, типа браузера и пр.
Подходит, если нужно сделать сложные логические проверки без написания кода.
Ссылка для установки: Conditional Redirects на WPShop.
Как сделать автоматический редирект в WordPress с помощью кода
Если вы предпочитаете полный контроль и хотите обойтись без плагинов, можно написать свой код. Ниже несколько примеров по разным задачам.
Редирект по роли пользователя
Например, после входа перенаправить подписчиков на страницу личного кабинета.
function wpco_redirect_after_login( $redirect_to, $request, $user ) {
// Проверяем, что это объект WP_User
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
if ( in_array( 'subscriber', $user->roles ) ) {
// Редирект на личный кабинет
return home_url( '/lichnyj-kabinet/' );
}
}
return $redirect_to;
}
add_filter( 'login_redirect', 'wpco_redirect_after_login', 10, 3 );Этот код нужно добавить в functions.php вашей темы или в кастомный плагин.
Редирект по User Agent (мобильные устройства)
Чтобы перенаправить мобильных пользователей на мобильную версию:
function wpco_mobile_redirect() {
if ( wp_is_mobile() && ! is_page( 'mobile' ) ) {
wp_redirect( home_url( '/mobile/' ) );
exit;
}
}
add_action( 'template_redirect', 'wpco_mobile_redirect' );Функция wp_is_mobile() встроена в WordPress и определяет мобильное устройство.
Редирект по GET-параметру в URL
Иногда нужно сделать редирект, если в URL есть определённый параметр, например ?promo=1:
function wpco_redirect_by_query_param() {
if ( isset( $_GET['promo'] ) && $_GET['promo'] === '1' ) {
wp_redirect( home_url( '/special-offer/' ) );
exit;
}
}
add_action( 'template_redirect', 'wpco_redirect_by_query_param' );Как избежать циклов и ошибок при редиректах
При работе с редиректами важно избегать зацикливания. Например, если условие срабатывает на странице, куда вы редиректите, то браузер будет постоянно перенаправляться.
Чтобы этого избежать, проверяйте, что текущий URL не совпадает с URL для редиректа:
function wpco_safe_redirect() {
$target_url = home_url( '/mobile/' );
if ( wp_is_mobile() && ! is_page( 'mobile' ) ) {
if ( ! is_page( 'mobile' ) ) {
wp_redirect( $target_url );
exit;
}
}
}
add_action( 'template_redirect', 'wpco_safe_redirect' );Это простая проверка, которая исключает повторный редирект с той же страницы.
Полезные советы по работе с редиректами в WordPress
Отслеживайте количество редиректов
Слишком много редиректов замедляет загрузку сайта и может повлиять на SEO. Используйте плагины с логами или анализируйте логи сервера.
Используйте 301 редирект для постоянных изменений
301 редирект сообщает поисковым системам, что страница перемещена навсегда. В коде WordPress функция wp_redirect() по умолчанию ставит 302 редирект, поэтому необходимо явно указать статус:
wp_redirect( $url, 301 );Тестируйте редиректы на разных устройствах и браузерах
Убедитесь, что редиректы срабатывают правильно и не мешают пользователям.
Заключение
Автоматические редиректы в WordPress — мощный инструмент для управления пользовательским опытом и SEO. Можно использовать плагины для быстрого решения или написать собственные функции, которые учитывают нужные условия и исключают ошибки. Важно тщательно тестировать все варианты и следить за производительностью сайта.
Если хотите расширить функционал вашего сайта, посмотрите плагины на WPShop.ru — там много полезных решений для WordPress.