Пустые категории в WordPress могут создавать ненужный мусор в структуре сайта и базе данных, ухудшая навигацию и иногда влияя на SEO. В этой статье мы подробно разберём, как найти и удалить пустые категории в WordPress, используя как встроенные возможности, так и примеры кода.
Почему важно удалять пустые категории в WordPress
Пустые категории — это категории, в которых нет записей. Их наличие может привести к нескольким проблемам:
- Пользовательская навигация становится запутанной, так как появляются неинформативные разделы.
- Пустые категории могут индексироваться поисковыми системами, создавая дублированный или некачественный контент.
- Избыточные данные усложняют управление сайтом и могут замедлять некоторые процессы.
Удаление пустых категорий поможет поддерживать чистоту базы данных и улучшит пользовательский опыт.
Как найти пустые категории через админку WordPress
Самый простой способ — зайти в меню Записи > Рубрики. Здесь WordPress отображает список всех категорий с указанием количества записей в каждой.
Отсортируйте список по количеству записей, чтобы быстро увидеть категории с нулём записей. Пустые категории можно удалить вручную, кликнув на ссылку «Удалить» под названием категории.
Однако при большом количестве категорий ручное удаление неудобно, поэтому ниже рассмотрим автоматизированные способы.
Автоматическое удаление пустых категорий с помощью PHP-кода
Для автоматизации процесса можно написать функцию, которая найдет и удалит все пустые категории. Ниже пример функции wplab_delete_empty_categories(), которую можно добавить в файл functions.php вашей темы или в собственный плагин.
function wplab_delete_empty_categories() {
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
);
$categories = get_terms($args);
$deleted = 0;
foreach ($categories as $category) {
if ($category->count == 0) {
wp_delete_term($category->term_id, 'category');
$deleted++;
}
}
return $deleted;
}
// Пример использования: удаляем пустые категории и выводим результат
add_action('admin_init', function() {
if (isset($_GET['wplab_delete_empty_cats'])) {
$count = wplab_delete_empty_categories();
wp_die("Удалено пустых категорий: " . $count . ". <a href='edit-tags.php?taxonomy=category'>Вернуться к рубрикам</a>");
}
});Этот код при добавлении к URL ?wplab_delete_empty_cats=1 в админке удалит все пустые категории и выведет количество удалённых.
Пояснение к коду
Функция получает все категории, включая пустые (hide_empty => false), затем проверяет количество записей ($category->count). Если категорий без записей много, этот метод быстро очистит их.
Важно: перед использованием рекомендуется сделать резервную копию базы данных, чтобы избежать потерь.
Удаление пустых категорий через SQL-запросы
Если у вас есть доступ к базе данных и вы умеете работать с phpMyAdmin или консолью MySQL, удаление пустых категорий можно выполнить напрямую.
DELETE t, tt
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'category' AND tt.count = 0;Этот запрос удалит одновременно записи из таблиц wp_terms и wp_term_taxonomy, относящиеся к пустым категориям (где count равен 0).
Обязательно замените префикс wp_ на ваш, если он отличается. И обязательно сделайте резервную копию базы перед выполнением.
Использование плагинов для удаления пустых категорий
Если вы предпочитаете решения без кода, можно воспользоваться плагинами с расширенными возможностями управления таксономиями.
Например, плагин Term Management Tools позволяет массово удалять категории и другие термины, в том числе фильтровать по количеству записей. Но в стандартной версии нет отдельной функции удаления пустых категорий, поэтому лучше комбинировать с ручным отбором.
Также можно использовать Clearfy Pro — этот плагин содержит инструменты оптимизации базы данных и управления таксономиями, включая удаление неиспользуемых категорий и тегов.
Как избежать появления пустых категорий
Чтобы минимизировать появление пустых категорий, стоит:
- При создании записей внимательно выбирать категории и не создавать лишние.
- Использовать пользовательские типы записей с отдельными таксономиями, чтобы не смешивать разные типы контента.
- Автоматизировать очистку пустых категорий, например, запускать функцию удаления пустых категорий по Cron.
Пример добавления Cron задачи для удаления пустых категорий
function wplab_schedule_empty_cat_cleanup() {
if (!wp_next_scheduled('wplab_cleanup_empty_categories')) {
wp_schedule_event(time(), 'daily', 'wplab_cleanup_empty_categories');
}
}
add_action('wp', 'wplab_schedule_empty_cat_cleanup');
add_action('wplab_cleanup_empty_categories', 'wplab_delete_empty_categories');Этот код запустит удаление пустых категорий один раз в день автоматически.
Выводы и рекомендации
Удаление пустых категорий — важная задача для поддержания чистоты и эффективности WordPress-сайта. Вы можете решить её с помощью:
- Ручного удаления в админке.
- Использования PHP-кода для массовой очистки.
- Выполнения SQL-запросов напрямую в базе.
- Плагинов, таких как Clearfy Pro, которые облегчают управление таксономиями.
Рекомендуется всегда делать резервные копии перед удалением и тестировать код на тестовом сайте.