Пустые категории в WordPress — это те категории, в которых нет ни одной записи. Они могут накапливаться со временем, особенно если вы часто редактируете структуру сайта или удаляете контент. Пустые категории не только захламляют админку, но и могут негативно влиять на SEO и удобство навигации пользователей.
Почему важно удалять пустые категории в WordPress
Пустые категории не несут никакой смысловой нагрузки и могут создавать путаницу в списках категорий на сайте. Кроме того, поисковые системы могут воспринимать такие категории как низкокачественные страницы, что снижает общий рейтинг сайта. Регулярное удаление пустых категорий помогает поддерживать чистоту структуры и улучшает производительность базы данных.
Удаление пустых категорий вручную — утомительный процесс, особенно если категорий много. Поэтому автоматизация этой задачи с помощью кода — оптимальное решение.
Как определить пустую категорию в WordPress
В WordPress категории хранятся как таксономия category, а количество записей в каждой категории доступно через параметр count. Если count равен 0, значит категория пустая.
Вы можете получить список всех категорий и проверить их количество записей через функцию get_categories() с нужными параметрами.
Пример функции для получения пустых категорий
function wp24_get_empty_categories() {
$empty_cats = get_categories(array(
'hide_empty' => true, // скрываем непустые
'fields' => 'ids' // получаем только ID
));
// Для получения пустых нужно hide_empty=false и фильтрация по count=0
$all_cats = get_categories(array('hide_empty' => false));
$empty_ids = array();
foreach ($all_cats as $cat) {
if ($cat->count == 0) {
$empty_ids[] = $cat->term_id;
}
}
return $empty_ids;
}Эта функция возвращает массив ID всех пустых категорий.
Автоматическое удаление пустых категорий — пример кода
Далее рассмотрим функцию, которая автоматически удаляет пустые категории из базы данных, используя полученный список ID.
function wp24_delete_empty_categories() {
$empty_cats = wp24_get_empty_categories();
if (empty($empty_cats)) {
return 'Пустых категорий не найдено';
}
foreach ($empty_cats as $cat_id) {
wp_delete_term($cat_id, 'category');
}
return count($empty_cats) . ' пустых категорий удалено';
}Вы можете вызвать функцию wp24_delete_empty_categories() для запуска удаления. Например, это можно сделать вручную через интерфейс или автоматически через WP-Cron.
Настройка автоматического запуска с помощью WP-Cron
Чтобы удалять пустые категории регулярно, например, раз в неделю, можно использовать планировщик задач WordPress — WP-Cron.
function wp24_schedule_empty_cat_cleanup() {
if (!wp_next_scheduled('wp24_empty_cat_cleanup_hook')) {
wp_schedule_event(time(), 'weekly', 'wp24_empty_cat_cleanup_hook');
}
}
add_action('wp', 'wp24_schedule_empty_cat_cleanup');
add_action('wp24_empty_cat_cleanup_hook', 'wp24_delete_empty_categories');Этот код регистрирует еженедельное событие, которое будет вызывать функцию удаления пустых категорий автоматически.
Практические рекомендации и безопасность
Перед внедрением автоматического удаления категорий настоятельно рекомендуем сделать резервную копию базы данных. Удаление категорий необратимо, и если вдруг категории используются в связях или для настроек, это может привести к проблемам.
Также можно добавить логирование удалений, чтобы отслеживать, какие категории были удалены и когда.
Пример расширенной функции с логированием
function wp24_delete_empty_categories_with_log() {
$empty_cats = wp24_get_empty_categories();
if (empty($empty_cats)) {
error_log('[' . date('Y-m-d H:i:s') . '] Пустых категорий для удаления не найдено');
return;
}
foreach ($empty_cats as $cat_id) {
$cat = get_category($cat_id);
if ($cat) {
wp_delete_term($cat_id, 'category');
error_log('[' . date('Y-m-d H:i:s') . '] Удалена пустая категория: ' . $cat->name . ' (ID: ' . $cat_id . ')');
}
}
}Полезные плагины для работы с категориями в WordPress
Если вы предпочитаете использовать плагины, а не код, обратите внимание на:
- Term Management Tools — позволяет массово удалять и сливать категории;
- WP Bulk Delete — мощный плагин для массового удаления записей и таксономий, включая пустые категории;
- Clearfy Pro — оптимизирует работу WordPress, в том числе позволяет управлять таксономиями и удалять ненужные элементы.
Подробный разбор и примеры настройки этих плагинов можно найти на wpshop.ru.
Заключение
Автоматическое удаление пустых категорий — важный шаг к поддержанию чистоты и оптимизации вашего сайта на WordPress. С помощью приведённого кода и рекомендаций вы сможете легко внедрить эту функциональность и избежать накопления мусора в базе данных. Используйте WP-Cron для регулярного запуска и не забывайте о резервных копиях.