Slug таксономии в WordPress — это часть URL, которая отвечает за отображение категорий, тегов и других пользовательских таксономий. Иногда возникает необходимость изменить или удалить slug, чтобы сделать URL адреса более короткими, удобными для SEO или соответствующими дизайн-концепции сайта. В этой статье мы подробно разберём, как это сделать правильно и безопасно.
Что такое slug таксономии и зачем его менять
Slug — это уникальный идентификатор таксономии в URL. Например, для категории с названием «Новости» slug может быть novosti, и URL будет выглядеть как site.ru/novosti/post-title. Иногда slug по умолчанию может быть неудобным, слишком длинным или конфликтовать с другими элементами сайта.
Изменение slug позволяет:
- Оптимизировать URL для поисковых систем;
- Сделать адреса удобнее и понятнее пользователям;
- Избежать конфликтов с другими страницами и таксономиями;
- Подстроить структуру сайта под конкретные задачи.
Однако удаление slug полностью — задача сложная и требует аккуратности, чтобы не сломать навигацию.
Как изменить slug таксономии через код в functions.php
Самый надёжный способ изменить slug таксономии — это переопределить параметр rewrite при регистрации таксономии. Если у вас кастомная таксономия, зарегистрированная через функцию register_taxonomy, можно просто обновить slug в массиве аргументов.
Пример изменения slug для таксономии genre:
function wplink_change_taxonomy_slug() {
register_taxonomy('genre', 'post', array(
'label' => 'Жанры',
'rewrite' => array('slug' => 'zhanr'), // новый slug
'hierarchical' => true,
));
}
add_action('init', 'wplink_change_taxonomy_slug', 11);Обратите внимание, что нужно использовать приоритет 11 или выше, чтобы переопределить регистрацию таксономии, если она уже была зарегистрирована.
После изменения slug обязательно перейдите в админке WordPress в "Настройки > Постоянные ссылки" и нажмите "Сохранить изменения", чтобы обновить правила перезаписи (rewrite rules).
Как изменить slug для встроенных таксономий (категорий, тегов)
Для встроенных таксономий, таких как категории (category) и теги (post_tag), изменить slug можно с помощью фильтра register_taxonomy_args:
function wplink_change_builtin_taxonomy_slug($args, $taxonomy) {
if ($taxonomy === 'category') {
$args['rewrite']['slug'] = 'rubrika'; // новый slug для категорий
}
if ($taxonomy === 'post_tag') {
$args['rewrite']['slug'] = 'metka'; // новый slug для тегов
}
return $args;
}
add_filter('register_taxonomy_args', 'wplink_change_builtin_taxonomy_slug', 10, 2);Этот код сработает при инициализации таксономий и изменит slug без необходимости переписывать регистрацию.
Как удалить slug таксономии из URL полностью — методы и риски
Удаление slug таксономии из URL — задача нестандартная и требует дополнительных действий. Например, вместо URL site.ru/zhanr/fantastika вы хотите получить site.ru/fantastika. Это может вызвать конфликты с постами или страницами, так как URL перестанет однозначно указывать на таксономию.
Для решения этой задачи можно использовать плагин Clearfy Pro, который умеет убирать slug для таксономий с минимальным риском для SEO и функционала.
Если же хотите решить задачу программно, можно добавить фильтр на формирование URL и перехватить запросы, но это требует глубокого понимания маршрутизации WordPress и может привести к ошибкам 404 и конфликтам.
Пример упрощённого кода для удаления slug из URL таксономии genre:
function wplink_remove_taxonomy_slug($post_link, $post, $leavename) {
if ('post' === $post->post_type) {
$terms = wp_get_post_terms($post->ID, 'genre');
if ($terms && !is_wp_error($terms)) {
$post_link = str_replace('/' . $terms[0]->slug, '', $post_link);
}
}
return $post_link;
}
add_filter('post_type_link', 'wplink_remove_taxonomy_slug', 10, 3);<Однако, для полноценной маршрутизации нужно также фильтровать запросы, что значительно сложнее.
Плагины для управления slug таксономий в WordPress
Если вы хотите избежать ручного кода, есть несколько плагинов, которые помогут управлять slug таксономий:
- Clearfy Pro — мощный плагин с настройками для оптимизации URL и удаления slug таксономий без потери функционала;
- Remove Taxonomy Base — бесплатный плагин для удаления базового slug таксономий;
- Custom Permalinks — позволяет создавать любые пользовательские постоянные ссылки, включая таксономии;
Использование плагинов упрощает задачу и снижает риск ошибок, но всегда делайте резервные копии перед изменениями.
Как проверить и исправить ошибки после изменения slug таксономий
После изменения или удаления slug таксономий важно проверить, что ссылки работают корректно и не вызывают ошибок 404. Для этого:
- Очистите кэш сайта и браузера;
- Перейдите в "Настройки > Постоянные ссылки" и нажмите "Сохранить изменения" для обновления правил;
- Проверьте несколько страниц с таксономиями;
- Используйте инструменты для проверки ошибок, например, Google Search Console;
- Настройте 301 редиректы со старых URL на новые, чтобы не потерять SEO позиции.
Для удобства настройки редиректов можно использовать плагин Redirection.
Итоги и рекомендации по работе со slug таксономий в WordPress
Изменение slug таксономий — полезная практика для оптимизации URL и улучшения структуры сайта. Для кастомных таксономий достаточно изменить параметр rewrite при регистрации. Для встроенных таксономий используйте фильтр register_taxonomy_args.
Удаление slug полностью — задача более сложная, требующая либо использования специализированных плагинов, либо глубокой доработки маршрутизации с учетом всех возможных конфликтов.
Всегда не забывайте делать резервные копии и тестировать сайт после изменений. Это поможет избежать потери трафика и ошибок.
Если вы хотите попробовать готовое решение, рекомендую Clearfy Pro — плагин, который значительно упрощает работу с URL и slug таксономий.