В WordPress часто возникает необходимость изменить URL (slug) для пользовательских типов записей (Custom Post Types, CPT), чтобы сделать их более удобными для пользователей и поисковых систем. Однако простое изменение параметров пермалинков может привести к потере позиций в поисковой выдаче из-за изменения URL и возникновения битых ссылок.
Почему важно правильно менять URL типа записи
Если вы просто измените slug типа записи через функцию register_post_type и обновите пермалинки, все старые URL перестанут работать. Это приведет к ошибкам 404 и ухудшению SEO, поскольку поисковые системы увидят, что страницы переместились без корректных редиректов.
Поэтому важно не только изменить URL, но и настроить корректные 301 редиректы с прежних адресов на новые, чтобы сохранить трафик и позиции в поиске.
Как изменить slug для типа записи в WordPress
Для начала рассмотрим, как задается slug в функции register_post_type. Вот пример регистрации CPT с базовым slug:
function expertreview_register_movie_cpt() {
$args = [
'label' => 'Фильмы',
'public' => true,
'rewrite' => ['slug' => 'films'],
// другие аргументы
];
register_post_type('movie', $args);
}
add_action('init', 'expertreview_register_movie_cpt');Если сейчас URL типа записи выглядят как site.ru/films/название-записи, и вы хотите изменить slug на movies, то в параметре rewrite нужно прописать ['slug' => 'movies'].
После изменения перезапустите настройки постоянных ссылок (Перейдите в Настройки → Постоянные ссылки и нажмите «Сохранить изменения» без изменений), чтобы WordPress обновил правила перезаписи URL.
Как не потерять SEO при смене URL типа записи
Важно настроить 301 редиректы с прежних URL на новые. Это можно сделать несколькими способами:
1. Редиректы через плагин Redirection
Плагин Redirection — удобное решение для управления редиректами без правки кода. Для каждого старого URL создайте правило перенаправления на новый. Например:
- Источник:
/films/(.*) - Цель:
/movies/$1
Так все запросы к старым адресам будут корректно перенаправлены.
2. Редиректы через код в functions.php
Если не хотите использовать плагин, можно добавить следующий код в файл functions.php вашей темы:
function expertreview_redirect_old_cpt_urls() {
if (is_singular('movie')) {
$current_url = home_url(add_query_arg([], $_SERVER['REQUEST_URI']));
if (strpos($current_url, '/films/') !== false) {
$new_url = str_replace('/films/', '/movies/', $current_url);
wp_redirect($new_url, 301);
exit;
}
}
}
add_action('template_redirect', 'expertreview_redirect_old_cpt_urls');Этот код проверяет, если пользователь зашел по старому пути /films/, и перенаправляет на новый /movies/ с кодом 301.
Обновление ссылок внутри сайта и карты сайта
После изменения URL важно обновить внутренние ссылки в контенте и навигации. Также проверьте, что карта сайта (sitemap), генерируемая SEO-плагинами, отражает новые адреса.
Если используете плагин Clearfy Pro, то в нем есть инструменты для очистки и оптимизации ссылок, которые помогут с автоматическим обновлением.
Проверка и мониторинг после смены URL
Используйте инструменты Google Search Console и Яндекс.Вебмастер для мониторинга ошибок 404, чтобы убедиться, что редиректы работают корректно. Также проверьте позиции сайта и трафик, чтобы оперативно реагировать на возможные проблемы.
Итоги и советы
- Изменение slug типа записи требует обновления правил пермалинков и настройки 301 редиректов.
- Плагины вроде Redirection значительно упрощают работу с редиректами.
- Не забудьте проверить и обновить внутренние ссылки и карту сайта.
- Тестируйте все изменения на тестовом сайте перед переносом на рабочий.
Таким образом, вы сохраните SEO-показатели сайта и гарантируете пользователям бесшовный переход на обновленные URL.