Как удалить или изменить URL типа записей в WordPress

В WordPress URL типа записей (post type slug) напрямую влияет на структуру ссылок и SEO вашего сайта. Иногда возникает необходимость удалить или изменить этот slug для стандартных или пользовательских типов записей. В этой статье подробно разберём, как это сделать правильно, избегая ошибок, которые могут привести к 404-страницам или конфликтам с другими URL.

Что такое URL типа записей (post type slug) в WordPress

Каждый тип записи в WordPress имеет уникальный slug, который формирует часть URL. Например, для стандартного типа записи «post» это обычно site.ru/post/post-name/. Для пользовательских типов записей (custom post types) slug задаётся при регистрации типа записи и обычно выглядит как site.ru/custom-slug/post-name/.

Этот slug важен, так как он влияет на удобство навигации, SEO-оптимизацию и структуру ссылок. Однако бывает, что по разным причинам нужно изменить или вообще убрать этот slug из URL.

Почему может понадобиться изменить или удалить slug типа записи

  • Упрощение URL: чтобы сделать ссылки короче и понятнее.
  • SEO-оптимизация: минимизация вложенности в URL может положительно влиять на ранжирование.
  • Избежание конфликтов: при совпадении slug с другими страницами или типами записей.
  • Редизайн структуры сайта: изменение логики URL без изменения контента.

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

Если вы создаете пользовательский тип записи с помощью функции register_post_type, то slug задаётся в параметре rewrite['slug']. Чтобы изменить slug, достаточно изменить этот параметр и обновить правила перезаписи (перегенерировать rewrite rules).

Пример: изменение slug для типа записи «book»

function wptricks_register_post_type_book() {
    $args = array(
        'label' => 'Книги',
        'public' => true,
        'rewrite' => array('slug' => 'literatura'), // Новый slug
        'has_archive' => true,
    );
    register_post_type('book', $args);
}
add_action('init', 'wptricks_register_post_type_book');

После изменения slug необходимо перейти в Настройки > Постоянные ссылки и нажать «Сохранить изменения» — это обновит правила перезаписи и сделает ссылки работоспособными.

Как убрать slug полностью (удалить из URL)

Удаление slug из URL — более сложная задача и в WordPress не предусмотрена из коробки. Для этого нужно использовать фильтры rewrite и обработку запросов.

Убирая slug, вы фактически выводите записи типа «book» как будто они обычные записи или страницы, что может вызвать конфликты с другими URL. Поэтому важно обеспечивать уникальность имён записей.

Пример удаления slug для типа записи «book»

function wptricks_remove_cpt_slug($post_link, $post) {
    if ('book' === $post->post_type && 'publish' === $post->post_status) {
        $post_link = str_replace('/book/', '/', $post_link);
    }
    return $post_link;
}
add_filter('post_type_link', 'wptricks_remove_cpt_slug', 10, 2);

function wptricks_parse_request($query) {
    if (! $query->is_main_query() || 2 !== count($query->query) || ! isset($query->query['page'])) {
        return;
    }

    // Проверяем по слагу записи
    $query->set('post_type', array('post', 'book', 'page'));
}
add_action('pre_get_posts', 'wptricks_parse_request');

Этот код убирает slug book из ссылок и перенаправляет запросы на соответствующие записи. Однако для корректной работы нужно внимательно тестировать и избегать дублирования URL.

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

Если вы не хотите писать код, есть плагины, которые могут помочь:

  • Clearfy Pro — включает опции для управления URL и оптимизации структуры ссылок.
  • Custom Post Type Permalinks — позволяет настраивать слуги для типов записей без кода.
  • Remove CPT Base — плагин для удаления slug пользовательских типов записей.

Использование плагинов удобно, но всегда проверяйте совместимость с вашей темой и другими плагинами.

Как безопасно изменить slug стандартных типов записей

Для стандартных типов записей, таких как «post» или «page», изменить slug сложнее — WordPress жестко привязывает их к структуре.

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

Пример изменения базового префикса для записей (post)

function wptricks_change_post_slug($post_link, $post) {
    if ('post' === $post->post_type && 'publish' === $post->post_status) {
        $post_link = str_replace('/blog/', '/', $post_link); // Убираем /blog/ или меняем на другой
    }
    return $post_link;
}
add_filter('post_type_link', 'wptricks_change_post_slug', 10, 2);

Для этого также нужно обновить правила перезаписи, чтобы WordPress правильно обрабатывал новые URL.

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

  • Всегда делайте бэкап базы данных перед изменениями в URL.
  • После изменения slug обновляйте правила перезаписи через настройки постоянных ссылок.
  • Проверяйте на наличие конфликтов URL и избегайте одинаковых слагов для разных типов записей.
  • Используйте редиректы 301 при изменении URL, чтобы сохранить позиции в поисковых системах.
  • Тестируйте изменения на тестовом сайте перед внедрением на живом.

Вывод

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

WooCommerce: автоматическое удаление заказов по отмеченным статусам с отсрочкой
25.06.2026
Как создать собственный вид построения страниц в WordPress
03.12.2025
Как удалить или изменить URL авторских страниц в WordPress без плагинов
03.03.2026
Как автоматически удалять старые изображения в WordPress
13.04.2026
Как изменить стандартный заголовок записей в WordPress программно
06.03.2026