В WordPress по умолчанию URL записей часто включают в себя категорию, например example.com/category/novosti/post-name. Иногда возникает задача убрать часть «category» или саму категорию из URL, чтобы получить более чистые и короткие адреса, например example.com/post-name. Это полезно для улучшения юзабилити и SEO, а также для удобства работы с URL.
Почему нужно удалять категорию из URL в WordPress
В стандартной структуре постоянных ссылок WordPress добавляет базу категории (обычно «category») и имя категории в URL записей. Это порой приводит к излишне длинным и не очень привлекательным ссылкам. Помимо эстетики, бывают случаи, когда категории часто меняются, и это может негативно влиять на SEO из-за изменения URL.
Удаление категории из URL позволяет:
- Сделать URL короче и понятнее для пользователей.
- Избежать дублирования контента, когда один пост может быть в нескольких категориях.
- Упростить управление ссылками и редиректами.
Однако важно помнить, что простое удаление категории из URL без правильной настройки чревато ошибками 404 и потерей трафика. Поэтому нужно делать это аккуратно и с правильным кодом.
Как удалить базу категории (category) из URL с помощью плагина Clearfy Pro
Для пользователей, кто предпочитает готовые решения, плагин Clearfy Pro предлагает функцию удаления базы категории с автоматической настройкой редиректов и оптимизацией для SEO.
Основные преимущества Clearfy Pro:
- Удаляет базу категории без ошибок 404.
- Автоматически ставит 301 редиректы со старых URL на новые.
- Минимизирует риски SEO-проблем.
Для активации достаточно установить и активировать плагин, затем в настройках включить опцию «Удаление базы категории».
Ручное удаление категории из URL с помощью функции в functions.php
Если хотите обойтись без плагинов, можно использовать собственный код в файле functions.php вашей темы или в отдельном плагине. Ниже приведён базовый и проверенный способ удаления категории из URL с помощью перезаписи правил и фильтров WordPress.
1. Удаление базы категории из ссылки
Для начала нужно убрать базу категории (обычно это слово 'category') из ссылки:
add_filter('category_link', 'wpdo_remove_category_base', 10, 2);
function wpdo_remove_category_base($link, $category) {
$category_base = get_option('category_base') ? get_option('category_base') : 'category';
$link = str_replace('/' . $category_base . '/', '/', $link);
return $link;
}Этот фильтр меняет ссылку категории, удаляя часть «category».
2. Добавление правил перезаписи для обработки URL без базы категории
Чтобы WordPress понимал новые URL без базы категории, нужно добавить правила перезаписи:
add_action('init', 'wpdo_remove_category_base_rewrite');
function wpdo_remove_category_base_rewrite() {
$category_base = get_option('category_base') ? get_option('category_base') : 'category';
add_rewrite_rule('^(.+?)/?$', 'index.php?category_name=$matches[1]', 'top');
}После добавления этого кода нужно обновить правила перезаписи, зайдя в админке в Настройки > Постоянные ссылки и просто нажать «Сохранить изменения».
3. Правильная обработка конфликтов URL с постами
Важно избегать конфликтов страниц и записей с категориями. Для этого лучше добавить проверку и исключить случаи, когда URL относится к записи:
add_filter('request', 'wpdo_fix_category_request');
function wpdo_fix_category_request($query_vars) {
if (!empty($query_vars['category_name'])) {
$term = get_term_by('slug', $query_vars['category_name'], 'category');
if (!$term) {
unset($query_vars['category_name']);
}
}
return $query_vars;
}Дополнительные советы по SEO и безопасности при удалении категории из URL
Удаление категории из URL может повлиять на SEO, поэтому важно:
- Настроить 301 редиректы со старых URL на новые, чтобы сохранить поисковый трафик.
- Проверить, что на сайте нет дублированного контента из-за одинаковых URL.
- Использовать инструменты типа Google Search Console для мониторинга ошибок 404 после изменений.
Для автоматизации редиректов можно использовать плагин Clearfy Pro или WPRemark для управления редиректами и комментариями.
Заключение и проверка результата
После применения кода и настройки перезаписи обязательно проверьте работу сайта:
- Откройте несколько записей и проверьте, что URL не содержит категории.
- Убедитесь, что категории доступны по новым URL без базы.
- Проверьте в консоли разработчика отсутствие ошибок 404.
Если вы не уверены в своих силах, лучше использовать готовые решения, например Clearfy Pro, которые обеспечивают безопасность и удобство.
Таким образом, удаление категории из URL — это вполне решаемая задача с помощью небольших доработок кода или специализированных плагинов, которая улучшит структуру ссылок вашего сайта на WordPress.