Slug таксономии – это часть URL, которая отвечает за адреса категорий, меток и пользовательских таксономий в WordPress. Иногда возникает необходимость изменить или полностью удалить slug таксономии из URL, чтобы получить более чистые и удобные адреса. В этой статье мы подробно разберём, как это сделать технически, без использования плагинов, а также рассмотрим примеры с пользовательскими таксономиями.
Что такое slug таксономии и зачем его менять
В WordPress slug таксономии — это базовая часть URL, которая идёт перед названием термина. Например, для категории с адресом site.ru/category/news slug таксономии — это category. По умолчанию WordPress добавляет этот сегмент для удобства и уникальности, но в ряде случаев требуется убрать slug или заменить его на другой.
Причины для изменения slug таксономии могут быть разные:
- Улучшение SEO за счёт более коротких и понятных URL;
- Снижение дублей URL и облегчение навигации;
- Согласование URL с дизайном и структурой сайта;
- Переезд с другого сайта с сохранением структуры ссылок.
Однако нужно помнить, что полное удаление slug таксономии требует доработки правил перезаписи URL (rewrite rules) и аккуратной обработки конфликтов с другими типами постов и страницами.
Как изменить slug таксономии через регистрацию таксономии
Если вы создаёте пользовательскую таксономию или хотите изменить slug для существующей, самый простой способ — указать параметр rewrite при регистрации таксономии. Вот пример кода для изменения slug:
function wptips_register_custom_taxonomy() {
register_taxonomy('genre', 'post', array(
'label' => 'Жанры',
'rewrite' => array('slug' => 'books'), // изменяем slug на 'books'
'hierarchical' => true,
'public' => true,
));
}
add_action('init', 'wptips_register_custom_taxonomy');
В этом примере мы регистрируем таксономию genre для постов и указываем slug books. Теперь URL для термина будет выглядеть так: site.ru/books/term-name.
Для встроенных таксономий, например category, изменить slug можно через фильтр register_taxonomy_args или с помощью плагинов, так как они регистрируются WordPress по умолчанию.
Как удалить slug таксономии из URL полностью
Удаление slug — более сложная задача, так как WordPress по умолчанию требует slug для правильной обработки URL. Однако есть способ добиться этого с помощью кастомных правил перезаписи и фильтров. Ниже пример, как убрать slug для таксономии genre:
function wptips_remove_taxonomy_slug() {
// Убираем slug в URL для таксономии 'genre'
add_rewrite_rule(
'^([^/]+)/?$',
'index.php?genre=$matches[1]',
'top'
);
}
add_action('init', 'wptips_remove_taxonomy_slug', 10, 0);
// Фильтр для правильного формирования ссылок таксономии
function wptips_remove_taxonomy_slug_link($url, $term, $taxonomy) {
if ('genre' === $taxonomy) {
$url = str_replace('/genre', '', $url);
}
return $url;
}
add_filter('term_link', 'wptips_remove_taxonomy_slug_link', 10, 3);
Этот код добавляет правило для обработки URL без slug и меняет формирование ссылок так, чтобы slug не появлялся. После добавления кода нужно сохранить постоянные ссылки в админке WordPress (Настройки → Постоянные ссылки), чтобы обновить правила перезаписи.
Однако будьте осторожны: такой подход может вызвать конфликты с другими страницами и постами, если имена терминов пересекаются с другими URL. Для сложных сайтов рекомендуется использовать плагины, например Clearfy Pro, который умеет оптимизировать URL и управлять slug таксономий безопасно.
Обработка конфликтов и SEO рекомендации при изменении slug таксономий
Изменение или удаление slug таксономии может привести к дублированию контента или конфликтам с URL других типов записей. Чтобы минимизировать проблемы, используйте следующие рекомендации:
- Перед изменением slug проверьте, не совпадает ли новый URL с другими страницами или постами;
- Настройте 301 редиректы со старых URL на новые, чтобы сохранить SEO-ценность;
- Используйте плагины для управления редиректами, например Expert Review;
- Тестируйте изменения на тестовом сайте перед применением на живом;
- Используйте инструменты Google Search Console для мониторинга ошибок и поискового трафика.
Пример организации редиректа после изменения slug таксономии
Если вы изменили slug с genre на books, добавьте редирект со старых URL:
function wptips_redirect_old_taxonomy_slug() {
if (is_tax('genre')) {
wp_redirect(site_url('/books/' . get_query_var('term')), 301);
exit;
}
}
add_action('template_redirect', 'wptips_redirect_old_taxonomy_slug');
Этот код автоматически перенаправит пользователей и поисковых роботов на новые URL с новым slug.
Заключение
Удаление или изменение slug таксономии в WordPress — задача технически сложная, но решаемая. Самый безопасный способ — изменять slug при регистрации таксономии через параметр rewrite. Полное удаление slug требует кастомных правил перезаписи и тщательного тестирования. Для сложных проектов рекомендуется использовать специализированные плагины из WPShop, которые упрощают работу с URL и улучшают SEO.