Автоматические редиректы — важный инструмент для корректной работы сайта на WordPress. Они помогают перенаправлять пользователей с устаревших или несуществующих URL на актуальные страницы, улучшая опыт посетителей и SEO-показатели сайта. В этой статье рассмотрим, как реализовать автоматические редиректы без использования плагинов, используя чистый PHP-код и возможности WordPress.
Зачем нужны автоматические редиректы в WordPress
Редиректы позволяют:
- Избежать ошибок 404 и потерю трафика;
- Сохранять позиции страниц в поисковой выдаче при смене URL;
- Перенаправлять пользователей на актуальный контент;
- Обеспечивать корректную работу ссылок после миграций сайта или изменения структуры.
Хотя существуют плагины для редиректов, иногда хочется обойтись без них, чтобы снизить нагрузку на сайт и лучше контролировать логику.
Реализация редиректа через functions.php: базовый пример
Самый простой способ сделать редирект — добавить код в файл functions.php вашей темы или в отдельный плагин. Ниже пример функции, которая проверяет URL и выполняет редирект на другую страницу.
function wpturbo_redirect_old_page() {
if ( is_page('staraia-stranica') ) {
wp_redirect( home_url('/novaya-stranica/'), 301 );
exit;
}
}
add_action('template_redirect', 'wpturbo_redirect_old_page');
Здесь мы проверяем, что пользователь зашел на страницу с ярлыком staraia-stranica, и делаем редирект на /novaya-stranica/ с кодом 301 (постоянный редирект). Функция wp_redirect — встроенная в WordPress, она корректно устанавливает заголовки.
Редирект по произвольным URL с помощью массива соответствий
Если нужно сделать несколько редиректов, можно хранить пары «старый URL — новый URL» в массиве и проверять текущий адрес.
function wpturbo_mass_redirects() {
$redirect_map = array(
'/staryi-url-1/' => '/novyi-url-1/',
'/staryi-url-2/' => '/novyi-url-2/',
'/staryi-url-3/' => '/novyi-url-3/',
);
$request_uri = trim( $_SERVER['REQUEST_URI'], '/' );
foreach ($redirect_map as $old => $new) {
if ( trim($old, '/') === $request_uri ) {
wp_redirect( home_url($new), 301 );
exit;
}
}
}
add_action('template_redirect', 'wpturbo_mass_redirects');
Обратите внимание: здесь мы сравниваем запрошенный URI без ведущих и завершающих слешей. Такой подход удобен для небольшого числа редиректов. Для больших таблиц лучше использовать .htaccess или специализированные плагины.
Редирект с условием по параметрам GET
Иногда нужно делать редиректы не только по URL, но и с учетом параметров запроса. Например, перенаправить /promo?old=1 на /promo-new.
function wpturbo_redirect_with_query() {
if ( is_page('promo') && isset($_GET['old']) && $_GET['old'] == '1' ) {
wp_redirect( home_url('/promo-new/'), 301 );
exit;
}
}
add_action('template_redirect', 'wpturbo_redirect_with_query');
Этот код проверяет, что мы на странице promo и параметр old равен 1, после чего делает редирект.
Редирект после отправки формы с использованием AJAX и WP AJAX API
Если на сайте есть формы, которые отправляются через AJAX, и после успешной отправки требуется сделать редирект, то достаточно в JS получить ответ и изменить location:
jQuery.ajax({
url: ajaxurl,
type: 'POST',
data: {
action: 'wpturbo_form_submit',
data: formData
},
success: function(response) {
if(response.success) {
window.location.href = response.data.redirect_url;
}
}
});
В PHP обработчике:
function wpturbo_form_submit_callback() {
// Обработка формы
wp_send_json_success( array('redirect_url' => home_url('/thank-you/')) );
}
add_action('wp_ajax_wpturbo_form_submit', 'wpturbo_form_submit_callback');
add_action('wp_ajax_nopriv_wpturbo_form_submit', 'wpturbo_form_submit_callback');
Использование плагина Clearfy Pro для управления редиректами
Если вы хотите упростить работу с редиректами, но не хотите перегружать сайт тяжелыми плагинами, обратите внимание на Clearfy Pro. Этот плагин позволяет легко настраивать редиректы, оптимизировать работу сайта и отключать ненужные функции WordPress. Он легкий и не нагружает систему, что важно для производительности.
Резюме и рекомендации по безопасности редиректов
При создании редиректов важно:
- Использовать постоянные редиректы (301) для SEO, если страница навсегда переехала;
- Вызывать
exit;послеwp_redirectчтобы прекратить выполнение скрипта; - Проверять входящие данные и не делать открытые редиректы на внешние сайты — это угроза безопасности;
- Для массовых редиректов предпочтительнее использовать серверные настройки (.htaccess, nginx), чтобы снизить нагрузку на PHP.
Таким образом, с помощью простых функций в WordPress и минимального кода можно реализовать гибкое управление редиректами без плагинов, что позволит сохранить контроль и повысить производительность сайта.