Пустые термины и таксономии в WordPress могут со временем накапливаться и замедлять работу сайта, особенно если у вас большой контент. В этой статье мы подробно рассмотрим, как найти и удалить пустые термины и таксономии, используя как готовые плагины, так и собственные функции на PHP. Такой подход поможет оптимизировать базу данных и улучшить производительность.
Что такое пустые термины и таксономии в WordPress
В WordPress термины — это элементы таксономий, например, категории, метки или пользовательские таксономии. Пустые термины — это те, к которым не привязаны записи. Например, категория, в которой нет ни одного поста, или пользовательская таксономия без присвоенных элементов.
Пустые таксономии — это редко встречающийся случай, когда сама таксономия не используется или не имеет терминов. Обычно речь идет именно о пустых терминах.
Такие элементы создают «мусор» в базе, увеличивают объем запросов и могут влиять на индексирование сайта поисковыми системами.
Как найти пустые термины вручную через код
Для начала можно получить список пустых терминов с помощью WP_Query и функций WordPress. Вот пример функции из пространства имен домена wp_box, которая возвращает пустые термины для заданной таксономии:
function wp_box_get_empty_terms($taxonomy = 'category') {
$terms = get_terms(array(
'taxonomy' => $taxonomy,
'hide_empty' => true,
'fields' => 'ids',
));
$all_terms = get_terms(array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
'fields' => 'ids',
));
$empty_terms = array_diff($all_terms, $terms);
return $empty_terms;
}
Объяснение: функция сначала получает ID терминов с записями (hide_empty = true), затем все термины без фильтрации. Разница — это ID пустых терминов.
Автоматическое удаление пустых терминов с помощью кода
Чтобы удалять такие термины автоматически, можно создать функцию, которая будет проходить по списку пустых терминов и удалять их. Рекомендуется запускать ее через WP-CLI, cron или вручную по необходимости.
function wp_box_delete_empty_terms($taxonomy = 'category') {
$empty_terms = wp_box_get_empty_terms($taxonomy);
foreach ($empty_terms as $term_id) {
wp_delete_term($term_id, $taxonomy);
}
}
Пример запуска удаления для стандартной категории:
wp_box_delete_empty_terms('category');
Важно: перед удалением рекомендуем сделать резервную копию базы данных.
Удаление пустых терминов без кода: лучшие плагины
Если вы не хотите использовать код, можно воспользоваться популярными плагинами, которые помогут очистить базу от неиспользуемых терминов:
- WP Sweep — плагин для оптимизации базы данных, умеет удалять пустые термины, ревизии, спам-комментарии и многое другое. Удобен и надежен.
- Advanced Database Cleaner — расширенный инструмент для очистки базы, поддерживает удаление пустых терминов и неиспользуемых метаданных.
- Term Management Tools — плагин для управления терминами и таксономиями, включая удаление и слияние терминов.
Все эти плагины доступны на https://wpshop.ru/plugins/.
Оптимизация и автоматизация процесса очистки
Чтобы не держать «мусор» в базе долго, можно настроить автоматическую очистку через WP-Cron или реальный cron:
add_action('wp_box_cron_delete_empty_terms', function() {
wp_box_delete_empty_terms('category');
wp_box_delete_empty_terms('post_tag');
});
if (!wp_next_scheduled('wp_box_cron_delete_empty_terms')) {
wp_schedule_event(time(), 'daily', 'wp_box_cron_delete_empty_terms');
}
Этот код зарегистрирует ежедневное событие, которое будет удалять пустые категории и метки. Можно добавить и свои пользовательские таксономии.
Особенности при работе с пользовательскими таксономиями
Если у вас на сайте активно используются пользовательские таксономии, например, для товаров, портфолио или других типов записей, стоит периодически проверять и их пустые термины.
Пример вызова функции удаления пустых терминов для пользовательской таксономии product_category:
wp_box_delete_empty_terms('product_category');
Также полезно добавить их в автоматический cron из предыдущего раздела.
Польза удаления пустых терминов и рекомендации
Удаление пустых терминов снижает нагрузку на базу, уменьшает количество лишних запросов и помогает поддерживать структуру сайта в порядке. Это особенно важно для сайтов с большим количеством контента и пользовательских таксономий.
Рекомендуется проводить такую очистку регулярно, например, раз в неделю или месяц, в зависимости от активности сайта.
Если вы используете плагины для SEO или кэширования, убедитесь, что после очистки базы вы обновили кэш и перепроверили настройки индексации.