В процессе работы сайта на WordPress часто возникают категории, которые остаются пустыми — без записей. Такие категории могут создавать путаницу при навигации, ухудшать SEO и визуально засорять админ-панель. В этой статье разберём, как найти и удалить пустые категории в WordPress без использования дополнительных плагинов, используя только код. Это решение отлично подойдёт разработчикам и продвинутым пользователям, которые хотят сохранить лёгкость сайта и не нагружать его лишними расширениями.
Почему важно удалять пустые категории в WordPress
Пустые категории — это таксономии, к которым не привязано ни одной записи или другого типа контента. Такие категории:
- Не несут полезной нагрузки для пользователей;
- Могут приводить к появлению страниц с нулевым содержимым, что негативно сказывается на SEO;
- Усложняют администрирование и выбор категорий при создании новых записей;
- Могут создавать путаницу в меню и виджетах, если отображаются автоматически.
Удаление пустых категорий помогает поддерживать структуру сайта чистой и логичной.
Как найти пустые категории в WordPress вручную через админ-панель
Самый простой способ — зайти в раздел Записи → Рубрики в админ-панели WordPress. Там напротив каждой категории есть колонка Количество, показывающая число записей в категории. Пустые категории имеют значение 0.
Однако, если категорий много, это неудобно. Кроме того, иногда нужно быстро удалить все пустые категории разом, чтобы не делать это вручную.
Автоматическое удаление пустых категорий с помощью PHP-кода
Для массового удаления пустых категорий можно использовать следующий PHP-скрипт. Его удобно запускать один раз, например, через подключение к functions.php вашей темы или однократный вызов через wp-cli или временный плагин-сниппет.
function wppremium_delete_empty_categories() {
$empty_categories = get_categories(array(
'hide_empty' => true,
'fields' => 'ids',
'number' => 0
));
$all_categories = get_categories(array(
'hide_empty' => false,
'fields' => 'ids'
));
// Пустые категории — это те, которых нет в массиве $empty_categories
$empty = array_diff($all_categories, $empty_categories);
foreach ($empty as $cat_id) {
wp_delete_category($cat_id);
}
}
// Запускаем функцию один раз
wppremium_delete_empty_categories();Объяснение кода:
get_categories(['hide_empty' => true])возвращает категории с записями;get_categories(['hide_empty' => false])возвращает все категории без исключения;- Разница между всеми категориями и непустыми — это пустые категории;
- Для каждой пустой категории вызывается
wp_delete_category(), которая удаляет категорию из базы.
Этот способ эффективно и быстро решает задачу удаления пустых категорий.
Как избежать случайного удаления нужных категорий
Перед запуском такого скрипта настоятельно рекомендуется сделать резервную копию базы данных, так как удаление категорий необратимо через интерфейс WordPress.
Если есть категории, которые должны оставаться пустыми (например, для будущего наполнения), можно исключить их из удаления, добавив проверку по ID или слагу:
function wppremium_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(
'hide_empty' => false,
'fields' => 'ids'
));
$empty = array_diff($all_categories, $empty_categories);
foreach ($empty as $cat_id) {
if (in_array($cat_id, $exclude)) continue;
wp_delete_category($cat_id);
}
}
wppremium_delete_empty_categories_safe();Удаление пустых категорий через WP-CLI
Если у вас есть доступ к командной строке сервера и установлен WP-CLI, можно использовать команду для быстрого удаления пустых категорий:
wp term list category --field=term_id --hide_empty=false --format=csv | \
while IFS= read -r term_id; do
count=$(wp post list --category=$term_id --field=ID | wc -l)
if [ "$count" -eq 0 ]; then
wp term delete category $term_id
fi
doneЭтот скрипт перебирает все категории, проверяет количество записей и удаляет пустые.
Использование плагина Clearfy Pro для управления категориями
Если вы хотите автоматизировать очистку и оптимизацию сайта, можно рассмотреть использование плагина Clearfy Pro, который включает инструменты для удаления неиспользуемых таксономий и оптимизации базы данных. Это удобное решение для тех, кто предпочитает готовые инструменты и расширенный функционал.
Выводы и рекомендации
Удаление пустых категорий в WordPress без плагинов — задача, которую можно решить быстро и безопасно с помощью простого PHP-кода. Такой подход помогает поддерживать структуру сайта чистой, улучшает SEO и облегчает администрирование. Для удобства можно дополнительно использовать WP-CLI или специализированные плагины, например, Clearfy Pro, если важна автоматизация и комплексная оптимизация.