В процессе работы с сайтом на WordPress часто появляются категории, которые со временем становятся пустыми — в них нет записей. Такие категории не только создают беспорядок, но и могут негативно влиять на SEO и навигацию сайта. В этой статье разберём, как автоматизировать удаление старых пустых категорий с помощью WP-Cron и собственного кода, а также рассмотрим несколько полезных плагинов, которые помогут в этом процессе.
Почему важно удалять пустые категории и как их найти
Пустые категории на сайте — это категории, в которых нет ни одной статьи или записи. Они могут появляться по разным причинам: удаление записей, перенос контента или ошибки при создании таксономий. Если таких категорий много, это приводит к следующим проблемам:
- Плохой пользовательский опыт — посетители могут видеть категории без контента, что сбивает с толку.
- Негативное влияние на SEO — поисковые системы могут считать такие страницы некачественными, что плохо сказывается на индексации.
- Загромождение админпанели — сложнее управлять таксономиями при большом количестве пустых категорий.
Чтобы найти пустые категории, можно использовать стандартный запрос WordPress или SQL-запрос к базе данных. Вот пример запроса WP_Query для поиска пустых категорий:
function wpmentor_get_empty_categories() {
$args = [
'taxonomy' => 'category',
'hide_empty' => true // по умолчанию скрывает пустые
];
$all_categories = get_terms($args);
$empty_categories = [];
$all_terms = get_terms(['taxonomy' => 'category', 'hide_empty' => false]);
foreach ($all_terms as $term) {
if ($term->count === 0) {
$empty_categories[] = $term;
}
}
return $empty_categories;
}Такой подход позволяет получить список всех пустых категорий для дальнейшего анализа или удаления.
Автоматизация удаления пустых категорий с помощью WP-Cron
Ручное удаление пустых категорий — рутинная и утомительная задача. Оптимальным решением будет автоматизация с помощью планировщика WP-Cron. Ниже приведён пример функции, которая удаляет пустые категории старше 30 дней, и настройка регулярного задания.
Код для удаления пустых категорий старше 30 дней
function wpmentor_remove_old_empty_categories() {
$days_limit = 30;
$empty_categories = wpmentor_get_empty_categories();
$now = current_time('timestamp');
foreach ($empty_categories as $category) {
$term_id = $category->term_id;
$term = get_term($term_id, 'category');
if (!$term || is_wp_error($term)) continue;
// Проверяем дату создания категории
$term_created = get_term_meta($term_id, 'wpmentor_term_created', true);
if (!$term_created) {
// Если даты нет, устанавливаем текущую
update_term_meta($term_id, 'wpmentor_term_created', $now);
continue;
}
$days_passed = ($now - $term_created) / DAY_IN_SECONDS;
if ($days_passed > $days_limit) {
wp_delete_term($term_id, 'category');
}
}
}
// Планирование задачи
add_action('wpmentor_cron_delete_empty_cats', 'wpmentor_remove_old_empty_categories');
if (!wp_next_scheduled('wpmentor_cron_delete_empty_cats')) {
wp_schedule_event(time(), 'daily', 'wpmentor_cron_delete_empty_cats');
}В этом коде мы сохраняем дату создания категории в мета-данных термина при первом обнаружении пустой категории, а затем удаляем её, если она пустая и старше 30 дней. Задача запускается ежедневно.
Плагины для управления и очистки таксономий
Если вы не хотите писать код, можно использовать специализированные плагины для управления таксономиями и удаления пустых категорий. Рассмотрим два популярных плагина:
1. Term Management Tools
Плагин позволяет удобно фильтровать и удалять термины, включая пустые категории. Есть возможность массового удаления, что ускоряет работу с большим количеством таксономий.
Скачать можно здесь: https://ru.wordpress.org/plugins/term-management-tools/
2. WP Sweep
WP Sweep помогает оптимизировать базу данных, включая очистку пустых категорий, тегов и других терминов. Он предоставляет удобный интерфейс и безопасно удаляет ненужные данные.
Подробнее и скачать: https://ru.wordpress.org/plugins/wp-sweep/
Как использовать WPShop Clearfy Pro для оптимизации таксономий
Если на вашем сайте установлен плагин Clearfy Pro, то он также предоставляет инструменты для оптимизации таксономий и управления категориями. В Clearfy есть функционал для удаления неиспользуемых категорий и очистки базы данных без риска повреждения.
Для этого перейдите в раздел "Оптимизация" → "Таксономии" и активируйте опцию удаления пустых категорий. Clearfy позволяет настроить расписание очистки, что удобно для автоматической поддержки порядка.
Советы и рекомендации по безопасности и тестированию
Прежде чем внедрять автоматическое удаление категорий, обязательно сделайте резервную копию сайта и базы данных. Это позволит восстановить данные в случае ошибки или непредвиденных ситуаций.
Также рекомендуется тестировать код на локальной копии сайта или на тестовом сервере. Убедитесь, что категории действительно пустые и не используются в других местах, например, в пользовательских типах записей или виджетах.
Если вы используете WP-Cron для автоматизации, помните, что он зависит от посещаемости сайта. Для критически важных задач можно настроить системный cron на сервере, вызывающий wp-cron.php с нужной периодичностью.
Выводы
Удаление старых пустых категорий — важная задача для поддержания чистоты и оптимизации сайта на WordPress. Автоматизация с помощью WP-Cron и собственного кода позволяет регулярно очищать таксономии без лишних усилий. Плагины Term Management Tools, WP Sweep и Clearfy Pro предоставляют удобные инструменты для тех, кто предпочитает готовые решения.
Используйте представленные подходы для поддержания порядка на вашем сайте и улучшения пользовательского опыта.