В процессе ведения блога или сайта на WordPress часто возникают категории, которые остаются пустыми — без опубликованных записей. Это не только создает визуальный беспорядок в админке и на сайте, но и может негативно влиять на SEO. В этой статье подробно разберем, как эффективно удалить пустые категории в WordPress, используя как готовые плагины, так и собственные функции с примерами кода.
Почему важно удалять пустые категории в WordPress
Пустые категории — это те, в которых нет записей, черновиков или других типов контента. Они могут появиться после удаления постов или при создании категорий на будущее, которые так и не были заполнены.
Основные причины для удаления пустых категорий:
- Улучшение навигации: Посетителям удобнее ориентироваться по сайту без лишних пустых разделов.
- SEO-оптимизация: Поисковые системы не любят пустые страницы и категории, это может снижать рейтинг сайта.
- Чистота базы данных: Уменьшается количество ненужных таксономий, что облегчает администрирование.
Удаление пустых категорий с помощью плагинов
Плагин WP Bulk Delete
Один из популярных инструментов — WP Bulk Delete. Он позволяет массово удалять категории по разным условиям, в том числе пустые.
Как удалить пустые категории с помощью WP Bulk Delete:
- Установите и активируйте плагин.
- Перейдите в меню Bulk WP > Delete Terms.
- Выберите таксономию Категории (category).
- Отметьте опцию Delete Empty Terms (Удалить пустые).
- Нажмите кнопку удаления и подтвердите действие.
Плагин быстро просканирует категории и удалит те, в которых нет записей.
Плагин Term Management Tools
Этот плагин помогает управлять таксономиями, в том числе объединять и удалять категории. Для удаления пустых категорий нужно сначала отфильтровать их вручную и затем удалить через интерфейс.
Хотя этот способ менее автоматизирован, он полезен для точечного контроля.
Удаление пустых категорий через код: пример функции для functions.php
Если вы предпочитаете решение без плагинов, можно использовать следующий код, который автоматически удалит все пустые категории при запуске.
function wpshab_delete_empty_categories() {
$empty_categories = get_categories(array(
'hide_empty' => true,
'fields' => 'ids',
'number' => 0
));
$all_categories = get_categories(array('fields' => 'ids', 'number' => 0));
$empty = array_diff($all_categories, $empty_categories);
foreach ($empty as $cat_id) {
wp_delete_category($cat_id);
}
}
// Запускаем функцию один раз при инициализации админки
add_action('admin_init', 'wpshab_delete_empty_categories');Объяснение кода:
- get_categories с
hide_empty => trueвозвращает только категории с записями. - get_categories без
hide_emptyвозвращает все категории. - Разница между всеми и заполненными категориями — это пустые категории.
- Далее мы удаляем каждую пустую категорию через
wp_delete_category.
Обратите внимание, что вызов функции стоит делать с осторожностью, например, один раз вручную, чтобы не удалять категории при каждом заходе в админку.
Как избежать случайного удаления нужных категорий
Перед удалением категорий важно выполнить резервное копирование базы данных. Также можно добавить исключения в код, чтобы не трогать системные или важные категории.
function wpshab_delete_empty_categories_safe() {
$exclude = array(1, 2); // ID категорий, которые не удалять
$empty_categories = get_categories(array(
'hide_empty' => true,
'fields' => 'ids',
'number' => 0
));
$all_categories = get_categories(array('fields' => 'ids', 'number' => 0));
$empty = array_diff($all_categories, $empty_categories);
foreach ($empty as $cat_id) {
if (!in_array($cat_id, $exclude)) {
wp_delete_category($cat_id);
}
}
}
add_action('admin_init', 'wpshab_delete_empty_categories_safe');В таком виде вы сможете защитить определённые категории от удаления.
Автоматизация удаления пустых категорий с использованием WPRemark
Если на сайте используется плагин WPRemark для обработки форм и автоматизации, можно интегрировать вызов очистки категорий в задачи по расписанию (cron), чтобы регулярно поддерживать базу в чистоте.
Это позволит не заботиться о ручном удалении и поддерживать сайт в оптимальном состоянии.
Выводы и рекомендации
Удаление пустых категорий — важный этап в поддержке чистоты и эффективности сайта на WordPress. Используйте проверенные плагины для удобства или добавляйте кастомные функции для автоматизации. Обязательно делайте резервное копирование и проверяйте, какие категории удаляются. Такая практика улучшит SEO, упростит навигацию и сделает управление сайтом более комфортным.