Внутренняя переадресация в WordPress: как сделать без плагинов

Что такое внутренняя переадресация и зачем она нужна

Внутренняя переадресация — это процесс автоматического перенаправления посетителей и поисковых роботов с одного URL вашего сайта на другой, находящийся внутри того же домена. Это полезно, когда вы меняете структуру сайта, удаляете или перемещаете страницы, или хотите направить трафик на более релевантный контент.

В WordPress часто приходится сталкиваться с необходимостью настроить такие переадресации без установки дополнительных плагинов, чтобы минимизировать нагрузку на сайт и избежать конфликтов. В этой статье я расскажу, как реализовать внутреннюю переадресацию программно, используя собственные функции и хуки WordPress.

Основные методы реализации внутренней переадресации в WordPress

Использование хука template_redirect

Хук template_redirect позволяет перехватить процесс загрузки шаблона и выполнить переадресацию до вывода страницы. Это наиболее подходящий момент для реализации редиректов.

Пример функции с префиксом wplog, которая перенаправит пользователя с URL /old-page/ на /new-page/:

function wplog_internal_redirect() {
    if (is_page('old-page')) {
        wp_redirect(site_url('/new-page/'), 301);
        exit;
    }
}
add_action('template_redirect', 'wplog_internal_redirect');

В этом коде проверяется, что текущая страница — old-page, и выполняется 301 редирект на new-page. Очень важно после wp_redirect вызывать exit, чтобы остановить дальнейшее выполнение скрипта.

Переадресация с помощью wp_safe_redirect

Если нужно гарантировать, что редирект выполняется только на допустимый URL внутри вашего сайта, стоит использовать wp_safe_redirect:

function wplog_safe_internal_redirect() {
    if (is_page('old-about')) {
        wp_safe_redirect(home_url('/about-us/'), 301);
        exit;
    }
}
add_action('template_redirect', 'wplog_safe_internal_redirect');

Этот метод предотвращает редиректы на внешние URL, что повышает безопасность.

Как организовать множественные внутренние переадресации через массив

Если у вас много страниц, которые нужно перенаправить, лучше хранить соответствия в массиве и обрабатывать их циклом. Это упростит управление и масштабирование:

function wplog_batch_redirects() {
    $redirect_map = array(
        'old-page-1' => '/new-page-1/',
        'old-page-2' => '/new-page-2/',
        'old-category/old-post' => '/new-category/new-post/',
    );

    $current_url = trim($_SERVER['REQUEST_URI'], '/');

    foreach ($redirect_map as $old_slug => $new_url) {
        if ($current_url === trim($old_slug, '/')) {
            wp_safe_redirect(site_url($new_url), 301);
            exit;
        }
    }
}
add_action('template_redirect', 'wplog_batch_redirects');

Обратите внимание, что здесь мы используем глобальный массив соответствий и сравниваем текущий URI с ключами массива. Такой подход гибок и легко обновляем.

Переадресация для пользовательских типов записей и таксономий

Иногда нужно сделать редиректы не только для страниц и постов, но и для кастомных типов записей или таксономий. Для этого в функции можно использовать условные теги WordPress:

function wplog_cpt_redirects() {
    if (is_singular('product') && get_post_field('post_name', get_queried_object_id()) === 'old-product') {
        wp_redirect(site_url('/new-product/'), 301);
        exit;
    }

    if (is_tax('genre', 'old-genre')) {
        wp_redirect(site_url('/genre/new-genre/'), 301);
        exit;
    }
}
add_action('template_redirect', 'wplog_cpt_redirects');

Здесь проверяется условие для кастомного типа записи product и таксономии genre. Это позволяет реализовать гибкую логику редиректов.

Как отладить и проверить работу переадресаций

После добавления функций редиректа важно проверить их работу. Для этого:

  • Откройте старый URL в браузере — он должен автоматически перейти на новый.
  • Проверьте HTTP-статус ответа — он должен быть 301 или 302.
  • Используйте расширения браузера, например Redirect Path, чтобы видеть цепочки редиректов.
  • Проверяйте ошибки в логах сервера и WordPress.

Если редиректы не срабатывают, убедитесь, что функции подключены в правильном месте, и что другие плагины или правила .htaccess не конфликтуют с ними.

Преимущества реализации внутренней переадресации без плагинов

Главные плюсы — это контроль и производительность. Вы не нагружаете сайт дополнительными плагинами, которые увеличивают время загрузки и могут конфликтовать. К тому же, код легко адаптировать под свои нужды и обновлять.

Особенно полезен такой подход для сайтов с небольшой и средней тематикой, где нужен точечный контроль над редиректами.

Рекомендации по безопасности и производительности

При работе с редиректами важно не создавать бесконечные циклы, которые могут привести к ошибкам и падению сайта. Всегда проверяйте, что старые URL корректно перенаправляются на новые и что нет конфликтующих правил.

Также избегайте выполнения тяжелых операций внутри функций редиректа — код должен быть легким и быстрым, чтобы не замедлять загрузку страниц.

Используйте wp_safe_redirect для защиты от внешних перенаправлений и всегда вызывайте exit после редиректа.

Как изменить главный заголовок страницы в WordPress без плагинов
20.12.2025
Как создать автоматические отчёты в WordPress с помощью WPExpert Review
07.01.2026
Как оптимизировать загрузку WordPress без плагинов
24.11.2025
Как создать плагин для WordPress с нуля: практическое руководство
06.11.2025
Как автоматически создавать миниатюры для картинок в WordPress
23.12.2025