В WordPress пустые категории (термины таксономии, не содержащие записей) могут засорять структуру сайта и влиять на SEO. Особенно это актуально для больших проектов, где таксономии часто меняются, а старые категории остаются без записей. В этой статье мы разберём, как эффективно и безопасно удалить пустые категории с помощью пользовательского PHP-кода, а также рассмотрим плагины, которые помогут в управлении таксономиями.
Почему важно удалять пустые категории в WordPress
Пустые категории не несут пользы для пользователей и поисковых систем. Они создают лишнюю нагрузку на базу данных и усложняют навигацию по сайту. Кроме того, некоторые темы и плагины могут отображать эти категории в списках, что ухудшает пользовательский опыт.
Удаление пустых категорий помогает:
- Оптимизировать структуру сайта
- Улучшить индексацию в поисковых системах
- Облегчить администрирование и управление контентом
Как найти и удалить пустые категории с помощью PHP-кода
WordPress предоставляет функцию get_terms(), с помощью которой можно получить список категорий с параметром 'hide_empty' => true — в этом случае возвращаются только категории, в которых есть записи. Чтобы найти пустые категории, нужно получить все категории с 'hide_empty' => false и проверить у каждой поле count. Если оно равно нулю — категория пустая.
Пример кода для удаления пустых категорий
function wpacademy_delete_empty_categories() {
$empty_categories = get_terms(array(
'taxonomy' => 'category',
'hide_empty' => false,
'fields' => 'ids'
));
foreach ($empty_categories as $cat_id) {
$term = get_term($cat_id);
if ($term && $term->count === 0) {
wp_delete_term($cat_id, 'category');
}
}
}
// Запускаем функцию один раз, например, через admin_init или WP-CLI
add_action('admin_init', 'wpacademy_delete_empty_categories');
В этом коде мы получаем ID всех категорий, затем для каждой категории проверяем количество записей и удаляем те, у которых счетчик равен нулю.
Автоматизация процесса удаления пустых категорий
Если на сайте часто появляются и удаляются категории, удобно автоматизировать очистку. Можно добавить ежедневное задание через WP-Cron:
function wpacademy_schedule_delete_empty_categories() {
if (!wp_next_scheduled('wpacademy_delete_empty_categories_hook')) {
wp_schedule_event(time(), 'daily', 'wpacademy_delete_empty_categories_hook');
}
}
add_action('wp', 'wpacademy_schedule_delete_empty_categories');
add_action('wpacademy_delete_empty_categories_hook', 'wpacademy_delete_empty_categories');
Это запустит удаление пустых категорий один раз в день автоматически.
Плагины для управления таксономиями и очистки категорий
Если вы предпочитаете не писать код, можно использовать плагины для управления таксономиями и очистки данных:
- Term Management Tools — расширяет возможности управления терминами, позволяет массово удалять категории.
- Clearfy Pro — многофункциональный плагин для оптимизации WordPress, в том числе помогает с очисткой и оптимизацией таксономий.
Как избежать появления пустых категорий
Чтобы минимизировать появление пустых категорий, следуйте рекомендациям:
- Перед удалением записей проверяйте, не останется ли категория пустой
- Используйте вложенные категории с умом, чтобы не создавать избыточные ветви
- Периодически проверяйте структуру сайта и удаляйте устаревшие категории
Для разработчиков полезно интегрировать функцию очистки в административный интерфейс или использовать WP-CLI для быстрого обслуживания.
Заключение по удалению пустых категорий в WordPress
Удаление пустых категорий — важный элемент поддержания чистоты и оптимизации сайта на WordPress. Использование приведённого кода позволяет быстро и безопасно очищать таксономии без сторонних плагинов или ручного труда. Для более удобного управления рекомендуются плагины с расширенными функциями, например, Clearfy Pro. Автоматизация процессов через WP-Cron или WP-CLI значительно упростит обслуживание сайта в долгосрочной перспективе.