В некоторых проектах на WordPress со временем накапливаются неиспользуемые или пустые таксономии, которые не привязаны ни к одному посту. Такие таксономии могут замедлять работу сайта, загромождать административную панель и создавать путаницу при управлении контентом. В этой статье мы подробно рассмотрим, как найти и удалить пустые таксономии, используя как готовые плагины, так и собственные функции с примерами кода.
Что такое пустые таксономии и почему их стоит удалять
Таксономии в WordPress — это способ группировки записей (постов, страниц, пользовательских типов записей). Стандартные таксономии — это категории и метки, но часто создаются и кастомные таксономии для специфической организации контента.
Пустые таксономии — это термины (например, категории или метки), которые не связаны ни с одной записью. Они могут появляться по разным причинам: автоматическое создание, импорт данных, ошибки в плагинах или при тестировании.
Удаление пустых таксономий важно, так как:
- Уменьшается размер базы данных;
- Упрощается админ-панель;
- Повышается производительность запросов к базе;
- Улучшается качество SEO — поисковики не индексируют пустые архивы.
Как найти пустые таксономии вручную через админку WordPress
Если у вас не очень большой сайт, можно проверить пустые термины через стандартный интерфейс:
- Перейдите в раздел «Записи» → «Рубрики» (или аналогичный для кастомных таксономий).
- Обратите внимание на колонку «Количество» — если значение равно 0, значит термин пустой.
- Выберите такие термины и удалите их через массовые действия.
Этот способ прост, но неудобен при большом количестве терминов или если у вас кастомные типы таксономий.
Использование плагинов для очистки пустых таксономий
Существуют плагины, которые автоматизируют поиск и удаление пустых терминов. Вот несколько популярных:
- Term Delete — позволяет удалять термины по критериям, в том числе пустые.
- WP-Optimize — кроме очистки базы, умеет удалять неиспользуемые термины.
- Clearfy Pro — мощный инструмент для оптимизации и очистки сайта, включая работу с таксономиями.
Плагины хороши для тех, кто не хочет писать код, но важно понимать, что при удалении терминов стоит делать резервную копию базы данных.
Автоматическое удаление пустых таксономий через код (программное решение)
Если вы хотите самостоятельно удалить пустые термины программно, можно использовать следующий подход. Он подойдет для регулярного запуска через WP-Cron или при необходимости очистки.
Пример функции для удаления пустых терминов из всех таксономий
function wp7ru_delete_empty_taxonomies() {
$taxonomies = get_taxonomies([], 'names');
foreach ($taxonomies as $taxonomy) {
$terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => false,
'fields' => 'ids',
]);
foreach ($terms as $term_id) {
$count = get_term($term_id, $taxonomy)->count;
if ($count === 0) {
wp_delete_term($term_id, $taxonomy);
}
}
}
}
// Запуск функции один раз
wp7ru_delete_empty_taxonomies();
Данная функция проходит по всем зарегистрированным таксономиям и удаляет термины, у которых значение count равно нулю, то есть они не привязаны к записям.
Оптимизация: удаление пустых терминов из конкретной таксономии
Если вам нужно очистить только определённую таксономию, например, кастомную product_cat, можно указать её явно:
function wp7ru_delete_empty_terms_in_taxonomy($taxonomy = 'product_cat') {
$terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => false,
'fields' => 'ids',
]);
foreach ($terms as $term_id) {
$term = get_term($term_id, $taxonomy);
if ($term && $term->count === 0) {
wp_delete_term($term_id, $taxonomy);
}
}
}
// Используем функцию для очистки
wp7ru_delete_empty_terms_in_taxonomy();
Как безопасно запускать удаление пустых терминов на сайте
Запускать такие функции напрямую лучше не в рабочее время и обязательно после создания резервной копии базы данных. Можно автоматизировать процесс, добавив задачу в WP-Cron:
function wp7ru_schedule_empty_taxonomy_cleanup() {
if (! wp_next_scheduled('wp7ru_empty_taxonomy_cleanup_hook')) {
wp_schedule_event(time(), 'daily', 'wp7ru_empty_taxonomy_cleanup_hook');
}
}
add_action('wp', 'wp7ru_schedule_empty_taxonomy_cleanup');
add_action('wp7ru_empty_taxonomy_cleanup_hook', 'wp7ru_delete_empty_taxonomies');
Так функция будет запускаться ежедневно и удалять пустые термины без участия администратора.
Дополнение: как избежать появления пустых таксономий
Чтобы минимизировать появление пустых терминов, следуйте рекомендациям:
- Проверяйте корректность импорта данных и сценариев автоматизации, чтобы не создавать лишних терминов.
- Отключайте функции плагинов, которые создают термины без необходимости.
- Используйте плагины оптимизации, например, Clearfy Pro, для регулярной очистки базы данных и таксономий.
Заключение
Удаление пустых таксономий — простая, но важная задача для поддержания чистоты и производительности сайта на WordPress. Вы можете выполнять эту работу вручную через админку, использовать готовые плагины или автоматизировать процесс с помощью собственного кода. В любом случае не забывайте создавать резервные копии перед массовыми изменениями в базе данных.