Пустые категории в WordPress могут негативно влиять на SEO вашего сайта и создавать путаницу для посетителей. В этой статье мы разберёмся, как автоматически находить и удалять пустые категории, используя как готовые плагины, так и собственные функции на PHP. Это поможет вам поддерживать чистоту и порядок в структуре вашего сайта.
Почему важно удалять пустые категории
Пустые категории — это категории, в которых нет ни одного опубликованного поста. Они занимают место в базе данных, могут создавать лишние URL, которые индексируются поисковыми системами, что ослабляет SEO сайта. Кроме того, пустые категории могут запутать пользователя при навигации по сайту.
Удаление пустых категорий предотвращает появление «мёртвых» ссылок и улучшает пользовательский опыт.
Как найти пустые категории в WordPress с помощью кода
Для начала можно получить список пустых категорий с помощью WP_Query и функции get_terms. Ниже пример функции wpcodex_get_empty_categories(), которая возвращает ID пустых категорий:
function wpcodex_get_empty_categories() {
$empty_cats = get_terms(array(
'taxonomy' => 'category',
'hide_empty' => true
));
$all_cats = get_terms(array(
'taxonomy' => 'category',
'hide_empty' => false
));
$empty_cat_ids = array();
foreach ($all_cats as $cat) {
if (!in_array($cat->term_id, wp_list_pluck($empty_cats, 'term_id'))) {
$empty_cat_ids[] = $cat->term_id;
}
}
return $empty_cat_ids;
}Функция сначала получает все категории, а затем отфильтровывает пустые, которые не отображаются при hide_empty=>true.
Автоматическое удаление пустых категорий через код
Чтобы удалить пустые категории, можно использовать функцию wpcodex_delete_empty_categories():
function wpcodex_delete_empty_categories() {
$empty_cat_ids = wpcodex_get_empty_categories();
foreach ($empty_cat_ids as $cat_id) {
wp_delete_term($cat_id, 'category');
}
}Эту функцию лучше запускать вручную или привязать к крону, чтобы не удалять категории случайно.
Пример запуска через WP-CLI
Если у вас есть доступ к WP-CLI, можно создать кастомную команду:
if (defined('WP_CLI') && WP_CLI) {
WP_CLI::add_command('wpcodex delete_empty_cats', function() {
wpcodex_delete_empty_categories();
WP_CLI::success('Пустые категории удалены');
});
}Запуск из консоли: wp wpcodex delete_empty_cats
Плагины для удаления пустых категорий
Если не хочется писать код, можно использовать плагины. Вот несколько популярных решений:
- Term Management Tools – расширение для массового управления терминами (категориями и метками). Позволяет быстро найти и удалить пустые категории.
- Bulk Delete – плагин для массового удаления постов и терминов с гибкими условиями, включая пустые категории.
При использовании плагинов обратите внимание на отзывы и совместимость с вашей версией WordPress.
Как избежать появления пустых категорий
Чтобы не создавать пустые категории, рекомендую настроить форму добавления категорий так, чтобы категория создавалась только при добавлении хотя бы одного поста в неё. Также можно использовать плагин Clearfy Pro — он позволяет оптимизировать работу с таксономиями и проводить автоматическую очистку терминов.
Можно также скрывать пустые категории из меню и виджетов, используя фильтр wpcodex_exclude_empty_categories():
function wpcodex_exclude_empty_categories($args) {
$args['hide_empty'] = true;
return $args;
}
add_filter('widget_categories_args', 'wpcodex_exclude_empty_categories');
add_filter('wp_list_categories_args', 'wpcodex_exclude_empty_categories');Резюме: поддерживаем структуру категорий в порядке
Наличие пустых категорий негативно сказывается на SEO и удобстве пользователей. В статье мы рассмотрели как найти и удалить такие категории с помощью кода, WP-CLI и плагинов. Регулярная проверка и очистка поможет сделать ваш сайт на WordPress более профессиональным и удобным.