Как удалить или изменить slug постов в WordPress без редиректа

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

Почему стоит изменить или удалить slug поста в WordPress

Удаление или изменение slug может понадобиться в следующих случаях:

  • Укоротить URL для повышения удобочитаемости и эстетики.
  • Избавиться от лишних слов в адресах, например, от префикса категории.
  • Исправить старые URL, которые плохо ранжируются из-за структуры.
  • Создать более логичные и понятные ссылки для пользователей и поисковых систем.

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

Как WordPress формирует URL с использованием slug

По умолчанию WordPress формирует URL записей, страниц и таксономий на основе структуры постоянных ссылок. Например, если у вас структура /blog/%postname%/, то slug поста становится последней частью URL.

Некоторые сайты используют префиксы для типов записей или категорий, например, /category/news/slug-posta. В таких случаях slug не единственный элемент, отвечающий за URL.

Для изменения или удаления slug нужно понимать, как WordPress генерирует URL и с помощью каких фильтров и хуков можно вмешаться в этот процесс.

Изменение slug конкретного поста с помощью фильтра wptips_post_link

Допустим, вам нужно убрать slug из URL поста, чтобы ссылка выглядела как https://site.ru/название-поста, без префиксов и дополнительных сегментов.

Для этого можно воспользоваться фильтром post_link. Ниже пример кода, который убирает slug типа записи "post" из URL:

function wptips_remove_post_slug( $post_link, $post ) {
    if ( 'post' === $post->post_type ) {
        $post_link = home_url( '/' . $post->post_name . '/' );
    }
    return $post_link;
}
add_filter( 'post_link', 'wptips_remove_post_slug', 10, 2 );

Этот код формирует ссылку на пост без стандартного префикса. Но чтобы WordPress корректно обрабатывал такие URL, нужно дополнительно внести изменения в правила перезаписи.

Добавление правил перезаписи для обработки URL без slug

Чтобы WordPress понимал, что URL https://site.ru/название-поста относится к записи, нужно добавить пользовательские правила перезаписи (rewrite rules).

function wptips_add_rewrite_rules() {
    add_rewrite_rule('^([^/]+)/?$', 'index.php?name=$matches[1]', 'top');
}
add_action( 'init', 'wptips_add_rewrite_rules' );

После добавления этого кода необходимо обновить правила перезаписи, перейдя в админке в "Настройки > Постоянные ссылки" и просто сохранив настройки.

Теперь WordPress будет искать записи по имени из URL без префикса.

Риски и ограничения удаления slug без редиректа

Стоит понимать, что удаление slug из URL может привести к конфликтам, если у вас на сайте есть страницы, записи или таксономии с одинаковыми именами. Например, если есть страница /about и пост с slug about, WordPress не сможет однозначно определить, что показывать.

Также при изменении URL без настроенных редиректов вы можете потерять внешний трафик со старых ссылок.

Поэтому рекомендуем внимательно тестировать сайт после таких изменений и, если есть возможность, настроить 301 редиректы для старых URL.

Пример удаления slug категории из URL записей

Если на вашем сайте в URL записей присутствует slug категории, например, /news/slug-posta, и вы хотите убрать news, можно использовать плагин Clearfy Pro, который умеет убирать префиксы таксономий из URL без потери SEO.

Если же вы хотите сделать это вручную, то придется создавать сложные правила перезаписи и фильтры, что не всегда удобно.

Как программно изменить slug поста

Если нужно массово изменить slug у постов, можно написать функцию, которая будет проходить по записям и менять поле post_name в базе данных.

function wptips_update_post_slug( $post_id, $new_slug ) {
    $post_data = array(
        'ID' => $post_id,
        'post_name' => sanitize_title( $new_slug ),
    );
    wp_update_post( $post_data );
}

Используйте эту функцию осторожно и только после создания резервной копии базы данных.

Выводы и рекомендации

Изменение или удаление slug в WordPress — задача с техническими нюансами, требующая понимания работы системы ссылок и перезаписей. Прямое удаление slug без настройки перенаправлений может привести к проблемам с SEO и навигацией.

Если вам нужно убрать slug из URL, используйте фильтры post_link и добавляйте свои правила перезаписи через add_rewrite_rule. Не забывайте обновлять пермалинки в админке.

При массовом изменении slug применяйте функции для обновления поля post_name, но делайте это аккуратно и с резервным копированием.

Для удобства и безопасности можно использовать профессиональные плагины, такие как Clearfy Pro, которые упрощают управление URL и минимизируют риски.

Как удалить старые ревизии постов в WordPress без плагинов
23.01.2026
Как отключить автообновления плагинов в WordPress с помощью кода
31.01.2026
Как создать автоматический sitemap в WordPress с помощью кода
07.02.2026
Как использовать WP-Cron для задач с отложенным стартом в WordPress
19.12.2025
Как создать динамический favicon в WordPress
03.02.2026