Пустые категории в WordPress — это те, в которых нет ни одной публикации. Такие категории обычно не нужны, портят структуру и усложняют навигацию по сайту. В этой статье подробно разберём, как быстро и безопасно удалить пустые категории с помощью пользовательского кода, без установки дополнительных плагинов.
Почему важно удалять пустые категории WordPress
Пустые категории не только создают беспорядок в админке, но и могут негативно влиять на SEO. Поисковые системы не любят страницы, которые не содержат полезного контента, а наличие пустых категорий может привести к индексации «пустых» страниц, что ухудшит ранжирование сайта.
Кроме того, пользователи, заходя на страницы категорий, ожидают увидеть список записей. Если категория пуста, это ухудшает опыт взаимодействия и повышает показатель отказов.
Поэтому регулярное удаление пустых категорий — важная часть поддержания качества и удобства сайта на WordPress.
Как определить пустые категории в WordPress
Категории в WordPress — это таксономия типа category. Каждая категория хранит количество публикаций в поле count. Если это значение равно 0, значит в категории нет записей.
Для быстрого просмотра пустых категорий можно использовать SQL-запрос к базе данных:
SELECT term_id, name FROM wp_terms t
JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id
WHERE taxonomy = 'category' AND tt.count = 0;
Но лучше автоматизировать процесс удаления через PHP-код.
Удаление пустых категорий через пользовательскую функцию в functions.php
Для удаления пустых категорий можно написать кастомную функцию, которую вы запустите один раз из админки или через WP-CLI. Вот пример такой функции с комментариями:
function wpdream_remove_empty_categories() {
// Получаем все категории с count = 0
$empty_cats = get_categories(array(
'hide_empty' => true, // true скрывает пустые, поэтому ставим false
'fields' => 'ids',
'hide_empty' => false
));
$deleted_count = 0;
foreach ($empty_cats as $cat_id) {
$category = get_category($cat_id);
if ($category->count == 0) {
wp_delete_category($cat_id);
$deleted_count++;
}
}
return $deleted_count;
}
Чтобы запустить функцию, добавьте в конце файла functions.php такой вызов (только на время):
add_action('admin_init', function() {
$deleted = wpdream_remove_empty_categories();
if ($deleted) {
echo '<div class="notice notice-success is-dismissible">Удалено пустых категорий: ' . $deleted . '</div>';
}
});
После первого запуска обязательно удалите этот вызов, чтобы функция не выполнялась на каждом заходе в админку.
Пояснения к коду
Мы получаем все категории (даже пустые) с помощью get_categories с параметром hide_empty => false. Далее перебираем и проверяем поле count, чтобы удостовериться, что категория действительно пуста. Затем вызываем wp_delete_category(), которая удаляет категорию из базы.
Автоматизация удаления пустых категорий с WP-CLI
Если у вас есть доступ к командной строке и установлен WP-CLI, можно автоматизировать удаление пустых категорий так:
wp term list category --field=term_id --hide_empty=false | while read term_id; do
count=$(wp term get category $term_id --field=count)
if [ "$count" -eq 0 ]; then
wp term delete category $term_id
echo "Удалена категория с ID: $term_id"
fi
done
Этот скрипт получает список всех категорий, проверяет количество записей и удаляет пустые.
Плагины для работы с категориями и таксономиями
Если не хотите писать код, можно использовать плагины, упрощающие управление таксономиями:
- Clearfy Pro — позволяет оптимизировать структуру сайта, в том числе удалять пустые категории и таксономии.
- WPCommunity — если у вас сайт с сообществом, поможет гибко настраивать категории и разделы.
Однако использование кода зачастую быстрее и не нагружает сайт лишними плагинами.
Советы по предотвращению появления пустых категорий
Чтобы минимизировать появление пустых категорий, придерживайтесь следующих рекомендаций:
- Перед созданием категории продумывайте её необходимость и наполнение контентом.
- Используйте вложенные категории и комбинируйте их для структурирования.
- Регулярно проверяйте структуру категорий на предмет пустых и удаляйте их.
- При массовом удалении записей проверяйте, не остались ли пустые категории.
Заключение
Удаление пустых категорий — простой, но важный шаг в поддержании чистоты структуры сайта на WordPress. Использование пользовательских функций позволяет быстро и безопасно избавиться от ненужных категорий без установки дополнительных плагинов. Если же вы предпочитаете интерфейсные решения, обратите внимание на Clearfy Pro и другие инструменты из каталога WPSHOP.