Изменение URL типа записи в WordPress без потери SEO и редиректов

В WordPress часто возникает задача изменить структуру URL для кастомных или стандартных типов записей. Например, вы создали тип записи «портфолио» с базовым URL site.ru/portfolio/post-name, но хотите изменить его на site.ru/projects/post-name без потери SEO и без применения 301 редиректов. В этой статье мы подробно рассмотрим, как добиться этого технически грамотно, используя фильтры и функции WordPress.

Почему важно правильно менять URL типа записи

Изменение URL типа записи напрямую влияет на SEO сайта и пользовательский опыт. Неправильная смена может привести к ошибкам 404, потере позиций в поисковиках и ухудшению индексации. Многие решения предлагают использовать редиректы, но это не всегда удобно и может осложнить структуру сайта.

Оптимальным вариантом будет изменение slug (базы URL) типа записи на уровне перезаписи правил (rewrite rules) WordPress, чтобы сразу отдавать новые URL без промежуточных перенаправлений.

Как изменить slug типа записи через функцию регистрации

Первый и самый простой способ — задать нужный slug при регистрации типа записи с помощью параметра rewrite. Например, если тип записи зарегистрирован как:

register_post_type('portfolio', [
    'rewrite' => ['slug' => 'portfolio'],
    'public' => true,
    'label' => 'Портфолио',
]);

Чтобы изменить URL на /projects/, достаточно поменять параметр rewrite:

register_post_type('portfolio', [
    'rewrite' => ['slug' => 'projects'],
    'public' => true,
    'label' => 'Портфолио',
]);

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

Изменение slug для стандартных типов записей и таксономий

Для стандартных типов записей, например, «post» (записи блога), изменить базовый slug сложнее, так как WordPress жестко их обрабатывает. Однако можно использовать фильтр register_post_type_args для изменения параметров после регистрации.

add_filter('register_post_type_args', 'wpcore_change_post_slug', 10, 2);
function wpcore_change_post_slug($args, $post_type) {
    if ($post_type === 'post') {
        $args['rewrite'] = ['slug' => 'news', 'with_front' => false];
    }
    return $args;
}

Это изменит URL записей с /post-name на /news/post-name. Аналогично можно поступить с таксономиями, используя фильтр register_taxonomy_args.

Изменение URL типа записи без перерегистрации (динамически)

Иногда нет возможности изменить регистрацию типа записи напрямую (например, если тип записей регистрируется плагином). В этом случае можно динамически менять правила перезаписи с помощью фильтра rewrite_rules_array или post_type_link.

Фильтр post_type_link для замены URL при выводе ссылок

Чтобы изменить отображаемый URL для типа записи, можно использовать фильтр post_type_link:

add_filter('post_type_link', 'wpcore_change_post_link', 10, 2);
function wpcore_change_post_link($post_link, $post) {
    if ($post->post_type === 'portfolio') {
        $post_link = str_replace('/portfolio/', '/projects/', $post_link);
    }
    return $post_link;
}

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

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

Пример добавления правил перезаписи для типа записи portfolio с базой projects:

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

После добавления правил снова сохраните постоянные ссылки в админке.

Как проверить и отладить изменения URL

После внесения изменений в rewrite правила важно проверить, что новые URL корректно работают и не вызывают ошибок 404. Для этого:

  • Очистите кэш сайта и браузера.
  • Сохраните настройки постоянных ссылок в WordPress.
  • Проверьте новые URL в режиме инкогнито.
  • Используйте плагины для отладки rewrite правил, например, Clearfy Pro, который позволяет управлять оптимизацией и настройкой URL.

Пример комплексного решения: изменение URL с проверкой и поддержкой старых адресов

Если вы хотите плавно перейти на новые URL и избежать потери трафика, можно настроить редиректы из старых URL в новые с помощью плагина Expert Review или вручную через .htaccess.

Однако если важна минимизация редиректов, лучше использовать метод с изменением rewrite правил и фильтрами WordPress, описанный выше.

Итоговые рекомендации по изменению URL типа записи

  • По возможности меняйте slug типа записи при регистрации через параметр rewrite.
  • Для стандартных типов записей используйте фильтр register_post_type_args.
  • При невозможности менять регистрацию — используйте фильтры post_type_link и добавляйте кастомные правила rewrite.
  • Обязательно сохраняйте постоянные ссылки после изменений.
  • Тестируйте новые URL и отслеживайте ошибки 404.
  • Используйте плагины, такие как Clearfy Pro и Expert Review, для удобного управления SEO и редиректами.

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

Как отключить автоматическое удаление старых пустых сессий в WordPress
01.04.2026
WooCommerce: как автоматически очищать базу от старых и отменённых заказов
16.05.2026
WooCommerce: как автоматически удалять неактивные вариации товаров
25.05.2026
Оптимизация загрузки постов в блоке с помощью AJAX в WordPress
15.12.2025
WooCommerce: как автоматически удалять неактивные вариации товаров без плагинов
04.06.2026