В WordPress типы записей (post types) часто используются для создания различных видов контента — от стандартных записей и страниц до кастомных типов, например, портфолио, товаров или отзывов. Иногда возникает задача изменить URL (человекочитаемый адрес) для уже существующего типа записи без необходимости пересоздавать все записи заново. В этой статье подробно разберём, как это сделать корректно и без потери SEO.
Почему важно правильно изменить URL типа записи
Изменение URL типа записи — это не просто смена текста в настройках. URL влияет на индексацию сайта поисковыми системами, а резкая смена без правильного редиректа может привести к потере трафика и ухудшению позиций. Также важно, чтобы ссылки корректно работали для посетителей и не приводили к ошибкам 404.
При этом, если вы просто зарегистрируете новый тип записи с другим slug, то старые записи останутся на прежних URL, что не всегда удобно. Пересоздавать записи вручную — слишком трудоёмкий и рискованный процесс. Лучше использовать методы, которые позволят изменить базу URL без потери данных.
Как WordPress формирует URL для типов записей
Когда вы регистрируете кастомный тип записи через функцию register_post_type(), одним из параметров является rewrite, где указывается slug для формирования URL. Например:
register_post_type('wpdemo_portfolio', array(
'labels' => array('name' => 'Портфолио'),
'public' => true,
'rewrite' => array('slug' => 'portfolio'),
));
Если вы хотите изменить slug с portfolio на my-works, нужно изменить параметр rewrite и обновить правила перезаписи (rewrite rules).
Пример изменения slug кастомного типа записи без пересоздания
Чтобы правильно изменить URL, выполните следующие шаги:
- В файле регистрации типа записи измените параметр
rewrite['slug']на новый. - Очистите правила перезаписи, чтобы WordPress обновил маршруты.
- Настройте 301 редиректы со старых URL на новые, чтобы сохранить SEO.
Пример кода для файла functions.php вашего шаблона или плагина:
function wpdemo_change_post_type_slug() {
register_post_type('wpdemo_portfolio', array(
'labels' => array('name' => 'Портфолио'),
'public' => true,
'rewrite' => array('slug' => 'my-works'), // Новый slug
'has_archive' => true,
));
}
add_action('init', 'wpdemo_change_post_type_slug', 20);
// Функция для очистки rewrite правил
function wpdemo_flush_rewrite() {
wpdemo_change_post_type_slug();
flush_rewrite_rules();
}
register_activation_hook(__FILE__, 'wpdemo_flush_rewrite');
Обратите внимание, что flush_rewrite_rules() следует вызывать только при активации плагина или вручную, иначе это негативно скажется на производительности.
Настройка 301 редиректов для сохранения SEO
Чтобы не потерять позиции в поиске и не вызывать ошибки, нужно настроить перенаправления с старых адресов на новые. Например, если ранее адрес был /portfolio/post-name, а стал /my-works/post-name.
Для этого можно использовать плагин Redirection или добавить код в файл .htaccess:
RedirectMatch 301 ^/portfolio/(.*)$ /my-works/$1
Или программно через хук template_redirect:
function wpdemo_redirect_old_portfolio_urls() {
if (strpos($_SERVER['REQUEST_URI'], '/portfolio/') === 0) {
$new_url = str_replace('/portfolio/', '/my-works/', $_SERVER['REQUEST_URI']);
wp_redirect(site_url($new_url), 301);
exit;
}
}
add_action('template_redirect', 'wpdemo_redirect_old_portfolio_urls');
Как проверить и отладить изменения URL
После внесения изменений важно проверить, что:
- Старые URL корректно перенаправляются на новые с кодом 301.
- Новые URL работают и не выдают 404 ошибки.
- В админке WordPress записи отображаются корректно и ссылки на них ведут на новые URL.
Для проверки можно использовать инструменты браузера, а также специальные SEO-плагины или онлайн-сервисы проверки редиректов.
Пример использования плагина Clearfy Pro для управления URL
Если вы используете плагин Clearfy Pro, он предоставляет удобный интерфейс для настройки URL и перезаписи ссылок без необходимости писать код. В дополнение к ручным методам вы можете:
- Изменять slug типов записей и таксономий через настройки.
- Настраивать автоматические редиректы при смене URL.
- Оптимизировать структуру ссылок для SEO.
Это может сэкономить время и снизить риски ошибок при ручном редактировании.
Итоговые рекомендации
Изменение URL типа записи в WordPress без пересоздания — задача, которую можно решить корректно, следуя алгоритму:
- Измените параметр
rewrite['slug']при регистрации типа записи. - Обновите правила перезаписи с помощью
flush_rewrite_rules()при активации. - Настройте 301 редиректы для сохранения SEO и корректной работы ссылок.
- Проверьте результат на наличие ошибок и корректность перенаправлений.
Таким образом, вы сможете изменить URL без потери данных и с минимальными рисками для сайта.