Как удалить категорию из URL в WordPress без плагинов

Проблема: категория в URL мешает SEO и удобству пользователей

По умолчанию WordPress добавляет префикс категории в URL записей, например: site.ru/category/novosti/post-name. Иногда это нежелательно — вы хотите короткие и чистые URL вида site.ru/novosti/post-name или просто site.ru/post-name. Удаление категории из URL улучшает читаемость и может позитивно повлиять на SEO.

Диагностика проблемы

Для начала убедитесь, что в настройках постоянных ссылок в разделе "Настройки > Постоянные ссылки" в поле "Основная структура" указан «/%category%/%postname%/» или аналогичная, которая выводит категорию в URL.

Если категория отображается в URL, можно проверить, есть ли редиректы и ошибки 404 после изменений, чтобы избежать потери трафика.

Пошаговое решение удаления категории из URL без плагинов

Шаг 1. Измените структуру постоянных ссылок

В разделе "Настройки > Постоянные ссылки" поставьте структуру на /%postname%/. Это уберёт категорию из URL записей.

Шаг 2. Добавьте правила перенаправления для старых URL с категорией

Чтобы не потерять трафик с ранее индексированных ссылок, нужно настроить 301 редиректы с URL с категорией на новые. Это можно сделать через файл .htaccess (если используется Apache) или с помощью кода в functions.php.

Пример кода для редиректа через functions.php:

function redirect_old_category_urls() {
    if (is_singular('post')) {
        $current_url = home_url(add_query_arg(array(), \$_SERVER['REQUEST_URI']));
        if (strpos($current_url, '/category/') !== false) {
            $new_url = str_replace('/category/', '/', $current_url);
            wp_redirect($new_url, 301);
            exit;
        }
    }
}
add_action('template_redirect', 'redirect_old_category_urls');

Шаг 3. Удалите базу категории из WordPress

Чтобы WordPress не добавлял «category» в URL категорий, уберите базу категории с помощью фильтра category_rewrite_rules и функции register_taxonomy с параметром rewrite.

Добавьте в functions.php следующий код:

function remove_category_base() {
    global $wp_rewrite;
    $wp_rewrite->extra_permastructs['category']['struct'] = '%category%';
}
add_action('init', 'remove_category_base');

После этого обновите настройки постоянных ссылок (просто нажмите "Сохранить изменения" в настройках). Это пересоздаст правила перезаписи.

Проверка результата после внедрения

  • Откройте любую запись, которая ранее имела в URL категорию — убедитесь, что URL теперь без «category».
  • Попробуйте перейти по старому URL с «category» — должна произойти переадресация на новый URL.
  • Проверьте в консоли браузера код ответа 301 для старого URL.
  • Используйте онлайн-инструменты проверки редиректов (например, https://httpstatus.io/) для подтверждения.

Частые ошибки и как их исправить

  • Ошибка 404 после удаления категории
    Причина: не обновлены правила перезаписи или кэш. Решение: зайдите в "Настройки > Постоянные ссылки" и нажмите "Сохранить изменения" для сброса правил. Очистите кэш сайта и браузера.
  • Конфликты URL с одинаковыми слагами постов и категорий
    Причина: убрав категорию из URL, записи и категории могут иметь одинаковые адреса. Решение: проверьте уникальность слагов, при необходимости переименуйте категории или посты.
  • Редиректы не срабатывают
    Причина: код в functions.php не подключается или приоритет хука неверный. Решение: убедитесь, что код не вызывает ошибок, используйте хук template_redirect и проверяйте логи ошибок.

Практические советы по безопасности и производительности

  • Редиректы лучше обрабатывать на уровне веб-сервера (nginx или Apache) для максимальной производительности.
  • Обновляйте правила перезаписи после любых изменений в структуре URL.
  • Используйте кеширование страниц и редиректов, чтобы снизить нагрузку на сервер.
  • Следите за тем, чтобы URL не имели дублирующегося контента — это важно для SEO.

Сравнение методов удаления категории из URL

МетодПреимуществаНедостатки
Изменение структуры постоянных ссылок Простота настройки, без кода Потеря прежних URL без редиректов, возможны ошибки 404
Редиректы через functions.php Гибкий контроль, можно писать логику Нагрузка на PHP, возможны задержки
Редиректы на уровне .htaccess/nginx Очень быстро, не нагружает PHP Сложнее в настройке, требует доступа к серверу
Плагины (например, Remove Category URL) Удобно, часто с дополнительным функционалом Дополнительная нагрузка, зависимость от стороннего кода
Как удалить метаданные из изображений в WordPress
06.02.2026
Как удалить или заблокировать плагин WordPress правильно
08.11.2025
Оптимизация запросов к мета-записям в WordPress
16.02.2026
Как создать многоязычный сайт на WordPress без плагинов
18.12.2025
Как удалить корзину WooCommerce из меню без плагинов
29.04.2026