Пустые термины (категории, теги или таксономии), не содержащие привязанных к ним записей, часто накапливаются в базе данных WordPress и могут создавать беспорядок в админке и усложнять навигацию на сайте. В этой статье подробно разберём, как эффективно и безопасно удалять такие пустые термины с помощью кода и популярных плагинов, а также рассмотрим лучшие практики для автоматизации этого процесса.
Что такое пустые термины и почему важно их удалять
Термин — это элемент таксономии WordPress, например, категория или тег. Если термин не содержит ни одной записи, он считается пустым. Пустые термины не влияют напрямую на работу сайта, но:
- Загромождают базу данных и админ-панель;
- Могут вызвать путаницу при подборе категорий для новых записей;
- Отрицательно влияют на SEO, если их выводить на фронтенде;
- Усложняют управление таксономиями.
Регулярное удаление пустых терминов помогает держать сайт в порядке и оптимизировать работу с таксономиями.
Удаление пустых терминов через PHP-код
Если вы хотите автоматизировать процесс удаления пустых терминов, можно использовать следующий код. Он перебирает указанные таксономии, находит пустые термины и удаляет их.
Пример функции для удаления пустых терминов
function wpreboot_delete_empty_terms($taxonomies = array('category', 'post_tag')) {
foreach ($taxonomies as $taxonomy) {
$terms = get_terms(array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
));
if (is_wp_error($terms)) continue;
foreach ($terms as $term) {
if ($term->count == 0) {
wp_delete_term($term->term_id, $taxonomy);
}
}
}
}
// Запуск функции, например, при активации темы или плагина
add_action('after_switch_theme', function() {
wpreboot_delete_empty_terms();
});В этом примере функция wpreboot_delete_empty_terms принимает массив таксономий, которые необходимо обработать. По умолчанию это категории и теги. Она получает все термины с помощью get_terms с параметром hide_empty => false, чтобы получить и пустые. Затем проверяется счётчик count, и если он равен 0, термин удаляется функцией wp_delete_term.
Такой подход безопасен и не требует дополнительных плагинов. Вы можете вызвать эту функцию вручную или привязать её к событию, например, активации темы, обновлению сайта или по расписанию с помощью WP-Cron.
Автоматизация удаления пустых терминов через WP-Cron
Чтобы удалять пустые термины регулярно, добавим планировщик задач:
if (!wp_next_scheduled('wpreboot_cron_delete_empty_terms')) {
wp_schedule_event(time(), 'daily', 'wpreboot_cron_delete_empty_terms');
}
add_action('wpreboot_cron_delete_empty_terms', 'wpreboot_delete_empty_terms');Этот код создаст ежедневное событие, вызывающее функцию удаления пустых терминов. Это удобно для автоматического поддержания порядка в базе данных.
Удаление пустых терминов с помощью плагинов
Если вы предпочитаете готовые решения, рассмотрите следующие плагины для управления таксономиями и очистки пустых терминов:
- Term Management Tools — расширение стандартных возможностей WordPress для управления терминами, в том числе массового удаления пустых терминов.
- WP Bulk Delete — мощный плагин для массового удаления контента и терминов по разным условиям, включая пустые термины.
- Clearfy Pro (https://wpshop.ru/plugins/clearfy-pro/?utm_source=wpreboot.ru&utm_medium=article&utm_campaign=kak-udalit-pustye-terminy-v-wordpress-cherez-kod-i-plaginy) — комплексный оптимизатор сайта, который умеет очищать базу данных, включая удаление пустых таксономий.
Использование плагинов удобно для тех, кто не хочет писать код или нуждается в дополнительных функциях по оптимизации и очистке.
Как удалить пустые термины через WP Bulk Delete
После установки и активации плагина:
- Перейдите в WP Bulk Delete > Taxonomies.
- Выберите таксономию (например, категории или теги).
- Включите фильтр по пустоте терминов (Delete empty terms only).
- Запустите удаление.
Плагин быстро и безопасно удалит все выбранные пустые термины, а также можно настроить регулярные задачи.
Советы по предотвращению появления пустых терминов
Удаление пустых терминов — это хорошо, но лучше минимизировать их появление. Для этого:
- При удалении записей проверяйте, не остаются ли термины без контента.
- Используйте пользовательские поля и таксономии осознанно, чтобы не создавать лишних терминов.
- Настраивайте интерфейс админки так, чтобы пользователи не создавали лишние категории и теги.
- Используйте плагин Clearfy Pro для автоматической оптимизации базы данных и удаления мусора.
Выводы и рекомендации
Удаление пустых терминов — важная задача для поддержания чистоты базы данных и удобства управления сайтом. Самый простой и эффективный способ — использовать приведённый выше PHP-код с автоматическим запуском через WP-Cron. Для тех, кто предпочитает визуальные инструменты и расширенные возможности, подойдут плагины WP Bulk Delete и Clearfy Pro.
Регулярно проверяйте и очищайте таксономии, чтобы избежать накопления пустых терминов и сохранить порядок в вашем WordPress-сайте.