В стандартной установке WordPress URL категорий формируется по шаблону site.ru/category/category-slug/. Это удобно, но порой требуется сделать URL категорий уникальными, например, убрать префикс category или добавить дополнительную структуру для SEO и удобства пользователей. В этой статье разберем, как сделать уникальные URL для категорий WordPress, используя практические примеры, код и рекомендации по плагинам.
Почему нужны уникальные URL для категорий WordPress
Уникальные URL категорий помогают улучшить SEO сайта, сделать ссылки короче и понятнее, а также избежать дублирующего контента, если у вас есть похожие таксономии или кастомные типы записей. Например, префикс category в URL часто воспринимается как лишний, и его лучше убрать для более чистых адресов.
Кроме того, уникальные URL облегчают запоминание ссылок и повышают доверие пользователей. Это особенно важно для крупных проектов с большим количеством категорий и вложенных разделов.
Как убрать префикс category из URL категорий WordPress
Самый частый запрос — убрать category из URL. Это можно сделать несколькими способами: через настройки, плагины или код.
1. Удаление префикса через настройки WordPress
Перейдите в Настройки > Постоянные ссылки и в поле «Префикс рубрик» (category base) оставьте пустым или поставьте точку .. Но WordPress по умолчанию не позволяет полностью убрать префикс без плагинов.
2. Использование плагина WPShop Clearfy Pro
Плагин Clearfy Pro позволяет удобно удалить префикс «category» без риска конфликтов с другими таксономиями. В настройках плагина достаточно включить эту опцию, и URL категорий станет короче.
3. Удаление префикса через код (wpapp_remove_category_base)
Если не хотите использовать плагин, можно добавить следующий код в файл functions.php вашей темы или в свой плагин:
function wpapp_remove_category_base() {
global $wp_rewrite;
$wp_rewrite->category_base = '';
$wp_rewrite->flush_rules();
}
add_action('init', 'wpapp_remove_category_base');Этот код убирает базу категорий, но требует аккуратности — после добавления нужно обновить структуру постоянных ссылок в панели WordPress (Настройки > Постоянные ссылки > Сохранить изменения).
Добавление уникальной структуры URL для вложенных категорий
Иногда требуется, чтобы URL отражал вложенность категорий, например:
site.ru/tema/podtema/
Для этого WordPress по умолчанию умеет строить вложенные URL, если категории связаны и правильно настроен префикс.
Настройка вложенных URL
В админке убедитесь, что у вас настроены категории с родительскими и дочерними связями. Например, категория «Тема» — родитель, «Подтема» — дочерняя.
После этого URL категории «Подтема» будет автоматически site.ru/category/tema/podtema/.
Удаление префикса с вложенными категориями через код
Для сохранения вложенной структуры и удаления префикса используйте более сложный код:
function wpapp_no_category_base_refresh_rules() {
global $wp_rewrite;
$wp_rewrite->category_base = '';
$wp_rewrite->flush_rules();
}
add_action('init', 'wpapp_no_category_base_refresh_rules');
// Перезапись правил для поддержки вложенных категорий без префикса
function wpapp_no_category_base_permastruct() {
global $wp_rewrite;
$wp_rewrite->extra_permastructs['category']['struct'] = '/%category%';
}
add_action('init', 'wpapp_no_category_base_permastruct');Внимание: этот код должен использоваться с осторожностью, так как может привести к конфликтам с другими типами записей.
Как избежать конфликтов при уникальных URL категорий
Если в вашем сайте есть страницы, записи или другие таксономии с именами, совпадающими с категориями, может возникнуть конфликт URL.
Чтобы этого избежать:
- Используйте уникальные слаги для категорий и страниц.
- Проверяйте наличие конфликтующих правил с помощью
flush_rewrite_rules()после изменений. - Используйте плагины, умеющие корректно работать с URL, например, Clearfy Pro.
Пример кастомного фильтра для формирования URL категории
Иногда требуется добавить префикс или суффикс к URL категории динамически. Рассмотрим пример с добавлением префикса topic к URL категорий:
function wpapp_custom_category_link( $url, $term, $taxonomy ) {
if ( 'category' === $taxonomy ) {
$url = home_url( '/topic/' . $term->slug . '/' );
}
return $url;
}
add_filter( 'term_link', 'wpapp_custom_category_link', 10, 3 );Этот фильтр меняет ссылку на категорию, добавляя перед слагом префикс topic. Не забудьте добавить соответствующие правила перезаписи, чтобы новые URL работали:
function wpapp_add_rewrite_rules() {
add_rewrite_rule('^topic/([^/]+)/?$', 'index.php?category_name=$matches[1]', 'top');
}
add_action('init', 'wpapp_add_rewrite_rules');<После добавления кода обновите структуру ссылок.
Полезные плагины для работы с URL категорий в WordPress
- Clearfy Pro — оптимизация URL, удаление категорий из URL, улучшение SEO. Подробнее на WPSHOP.
- Remove Category URL — бесплатный плагин для удаления префикса category.
- Yoast SEO — среди прочих функций позволяет убирать префикс категорий и настраивать ЧПУ.
Заключение
Уникальные URL для категорий — важный элемент SEO и удобства пользователей сайта на WordPress. Выбор способа зависит от задач проекта: для простого удаления префикса достаточно плагина Clearfy Pro или простого кода, для сложных вложенных структур — нужно более тонко настраивать правила перезаписи. В любом случае, после изменений всегда обновляйте постоянные ссылки и тестируйте сайт на наличие конфликтов.