Пустые категории на сайте WordPress могут создавать лишний беспорядок в админке и ухудшать восприятие структуры сайта для пользователей. Особенно это актуально, если вы импортировали контент или часто работаете с таксономиями, и некоторые категории остаются без записей. В этой статье я расскажу, как быстро и эффективно удалить пустые категории с помощью простого кода, без необходимости использовать тяжелые плагины.
Почему стоит удалять пустые категории в WordPress
Пустые категории не несут ценности для посетителей и мешают держать сайт чистым. Они могут:
- Загромождать меню и списки категорий на сайте;
- Путать редакторов и администраторов при выборе категорий для новых записей;
- Отрицательно влиять на SEO, если пустые категории индексируются поисковиками.
Удаление пустых категорий помогает поддерживать структуру сайта в порядке и облегчает управление контентом.
Как найти пустые категории через админку WordPress
Стандартный способ — зайти в меню «Записи» → «Рубрики» и вручную просмотреть список. Пустые категории отображаются с пометкой «0» в колонке «Количество записей». Однако при большом числе категорий это неудобно и занимает много времени.
Для автоматизации процесса оптимально использовать код, который удалит все пустые категории за одну операцию.
Удаление пустых категорий с помощью PHP-кода
Давайте рассмотрим простой пример кода, который можно добавить в файл functions.php вашей темы или в плагин для кастомных функций. Код найдет все категории, где нет записей, и удалит их.
function wpcource_delete_empty_categories() {
// Получаем все категории
$categories = get_categories(array(
'hide_empty' => true, // Получаем только категории с записями
'fields' => 'ids' // Нам нужны только ID
));
// Получаем все категории, включая пустые
$all_categories = get_categories(array('hide_empty' => false, 'fields' => 'ids'));
// Определяем пустые категории как те, что не входят в массив с записями
$empty_categories = array_diff($all_categories, $categories);
if (!empty($empty_categories)) {
foreach ($empty_categories as $cat_id) {
wp_delete_category($cat_id);
}
echo 'Удалено пустых категорий: ' . count($empty_categories);
} else {
echo 'Пустых категорий не найдено';
}
}
// Запустите функцию один раз, например, через админку
// wpcource_delete_empty_categories();
Важно: функцию wpcource_delete_empty_categories() не стоит запускать автоматически на каждом запросе, так как удаление категорий — операция, требующая контроля. Запускайте ее вручную или через WP-CLI.
Как безопасно запустить код
Добавьте код в functions.php, а вызов функции раскомментируйте только на время запуска. После успешного удаления удалите или закомментируйте вызов, чтобы случайно не удалить что-то лишнее.
Альтернативный способ: использование WP-CLI
Если у вас есть доступ к консоли сервера, проще и удобнее использовать WP-CLI — мощный инструмент для управления WordPress из командной строки.
Команда для удаления пустых категорий:
wp term list category --field=term_id --hide_empty=0 | xargs -I % wp term delete category %
Эта команда сначала выводит все категории, включая пустые (--hide_empty=0), затем удаляет их по ID. Будьте осторожны и лучше предварительно сделать бэкап базы данных.
Плагины для работы с категориями и таксономиями
Если вы предпочитаете использовать плагины, рекомендую Clearfy Pro. Этот плагин включает инструменты для оптимизации WordPress, среди которых удобная очистка и управление категориями, в том числе удаление пустых.
Плагин позволяет автоматизировать многие задачи по оптимизации, не погружаясь в код.
Выводы и рекомендации
Удаление пустых категорий — простая, но важная задача для поддержания чистоты сайта и удобства управления контентом. Используйте приведенный PHP-код для быстрого удаления или WP-CLI для продвинутых пользователей. Для тех, кто предпочитает интерфейс, подойдет плагин Clearfy Pro.
Регулярно проверяйте структуру категорий, чтобы сайт оставался упорядоченным и понятным как для посетителей, так и для поисковиков.