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

В процессе разработки сайтов на WordPress часто возникает необходимость изменить или удалить slug (человекочитаемый идентификатор в URL) для кастомного типа записи (Custom Post Type, CPT). Это может быть связано с изменением структуры сайта, улучшением SEO или исправлением ошибок. Однако прямое изменение slug без правильных действий может привести к потере данных, проблемам с отображением записей и ошибкам 404. В этой статье подробно разберём, как безопасно удалить или изменить slug у CPT, сохранив все данные и корректную работу сайта.

Что такое slug кастомного типа записи и зачем его менять?

Slug для CPT — это часть URL, которая указывает на тип записи, например, https://site.ru/portfolio/project1, где portfolio — slug CPT. Он задаётся при регистрации типа записи через параметр rewrite.

Причины изменения slug могут быть разные:

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

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

Регистрация CPT с изменяемым slug: базовый пример

Рассмотрим пример регистрации CPT с функцией, у которой префикс wpdevelop_. Для изменения slug достаточно изменить параметр rewrite['slug']:

function wpdevelop_register_portfolio_cpt() {
    $args = [
        'labels' => [
            'name' => 'Портфолио',
            'singular_name' => 'Проект',
        ],
        'public' => true,
        'has_archive' => true,
        'rewrite' => ['slug' => 'my-portfolio'], // измененный slug
        'supports' => ['title', 'editor', 'thumbnail'],
    ];
    register_post_type('portfolio', $args);
}
add_action('init', 'wpdevelop_register_portfolio_cpt');

После изменения slug необходимо сбросить правила перезаписи (permalinks), иначе новые URL не будут работать. Для этого достаточно в админке перейти в Настройки → Постоянные ссылки и просто сохранить настройки.

Как удалить slug CPT из URL и показывать записи на корне сайта

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

Для этого в аргументах CPT укажем 'rewrite' => ['slug' => '', 'with_front' => false] и добавим фильтр на перезапись:

function wpdevelop_register_portfolio_cpt_root() {
    $args = [
        'labels' => [
            'name' => 'Портфолио',
            'singular_name' => 'Проект',
        ],
        'public' => true,
        'has_archive' => false, // архив отключаем, чтобы не было конфликта
        'rewrite' => [
            'slug' => '',
            'with_front' => false,
        ],
        'supports' => ['title', 'editor', 'thumbnail'],
    ];
    register_post_type('portfolio', $args);
}
add_action('init', 'wpdevelop_register_portfolio_cpt_root', 0);

Далее нужно добавить фильтр для поддержки правильного поиска и запросов:

function wpdevelop_portfolio_post_link($post_link, $post) {
    if ('portfolio' === $post->post_type && 'publish' === $post->post_status) {
        $post_link = home_url('/' . $post->post_name . '/');
    }
    return $post_link;
}
add_filter('post_type_link', 'wpdevelop_portfolio_post_link', 10, 2);

Не забудьте после изменений сбросить правила перезаписи.

Этот способ подходит, если на сайте нет конфликтов с другими URL, например, страницами или записями с таким же slug.

Как сохранить SEO и данные при смене slug CPT

Изменение slug меняет URL, что может привести к ошибкам 404 и потере посетителей. Чтобы этого избежать, рекомендуем добавить 301 редиректы со старых адресов на новые. Например, если старый slug был portfolio, а новый my-portfolio, добавьте в .htaccess или через плагин редиректов правило:

Redirect 301 /portfolio/ /my-portfolio/

Также можно использовать плагин Clearfy Pro, который позволяет централизованно управлять редиректами и оптимизацией URL, что упростит задачу.

Практические советы и рекомендации

1. Всегда делайте бэкап перед изменениями

Перед изменением slug CPT создайте полную резервную копию базы данных и файлов сайта. Это позволит быстро восстановиться в случае ошибок.

2. Тестируйте изменения на локальном или тестовом сервере

Не вносите изменения напрямую на живом сайте. Проверяйте работу новых URL и редиректов в тестовой среде.

3. Учитывайте возможные конфликты URL

Если убираете slug CPT, убедитесь, что названия записей не пересекаются с другими типами контента, иначе WordPress не сможет корректно определить, какую запись показывать.

4. Используйте SEO-плагины для управления редиректами

Плагины вроде Clearfy Pro или SEOPress помогут настроить 301 редиректы без ручного редактирования .htaccess.

Заключение

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

Автоматическое удаление товаров из WooCommerce при пустой корзине
12.05.2026
Как отключить Emoji в WordPress без плагинов для ускорения сайта
23.02.2026
Как добавить автоматический сбор отзывов по email в WordPress
27.02.2026
Оптимизация загрузки шрифтов в WordPress для ускорения сайта
20.02.2026
Как создать автоматическое резервное копирование базы данных в WordPress
07.01.2026