Что такое термины таксономий и почему важно их удалять
В WordPress термины таксономий — это отдельные элементы, которые используются для классификации записей, например категории и метки. Со временем база данных сайта может засоряться неиспользуемыми терминами, которые ни к одной записи не привязаны. Это не только увеличивает размер базы данных, но и может замедлять работу сайта, особенно при большом количестве записей и терминов.
Удаление неиспользуемых терминов помогает сохранять базу данных в порядке, ускоряет запросы и облегчает администрирование. В этой статье мы рассмотрим, как программно выявить и удалить такие термины с использованием функций WordPress и SQL-запросов, а также познакомимся с полезными плагинами для автоматизации этой задачи.
Как найти неиспользуемые термины таксономий через SQL-запрос
Самый быстрый способ — выполнить SQL-запрос, который покажет термины без связанных записей. В таблице wp_term_taxonomy поле count хранит число записей, связанных с термином. Если count = 0, значит термин не используется.
Пример запроса для поиска неиспользуемых терминов всех таксономий:
SELECT t.term_id, t.name, tt.taxonomy FROM wp_terms t INNER JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id WHERE tt.count = 0;Этот запрос даст список терминов, которые не связаны ни с одной записью. Можно сузить поиск, например, только по категориям, заменив условие на tt.taxonomy = 'category'.
Удаление терминов с помощью SQL
Удалять термины напрямую через SQL нужно аккуратно, так как связаны они с несколькими таблицами. Чтобы удалить термин полностью, нужно очистить записи из таблиц wp_terms, wp_term_taxonomy и wp_term_relationships. Однако, если термин не используется, связей в wp_term_relationships нет.
Пример запроса для удаления неиспользуемых терминов категории:
DELETE t, tt FROM wp_terms t INNER JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id WHERE tt.taxonomy = 'category' AND tt.count = 0;Важно сделать резервную копию базы перед выполнением таких запросов.
Удаление неиспользуемых терминов программно с помощью WP-функций
Для более безопасного и гибкого подхода лучше использовать встроенные функции WordPress. Ниже пример функции wplancer_delete_unused_terms(), которая удаляет все неиспользуемые термины заданных таксономий.
function wplancer_delete_unused_terms(array $taxonomies = ['category', 'post_tag']) {
foreach ($taxonomies as $taxonomy) {
$terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => true,
]);
// Получим все термины
$all_terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => false,
]);
// Определим неиспользуемые термины
$unused_terms = array_filter($all_terms, function($term) use ($terms) {
return !in_array($term, $terms, false);
});
foreach ($unused_terms as $term) {
wp_delete_term($term->term_id, $taxonomy);
}
}
}Эта функция получает все термины таксономии, затем те, что используются, и удаляет оставшиеся, которые не связаны с записями. Можно вызвать ее из файла functions.php или создать плагин для периодической очистки.
Пояснения к функции
- get_terms() с
'hide_empty' => trueвозвращает только используемые термины. - get_terms() с
'hide_empty' => falseвозвращает все термины. - Сравнивая два массива, мы находим те, у которых
count = 0. - wp_delete_term() корректно удаляет термин и обновляет все связанные данные.
Плагины для управления терминами и оптимизации базы данных
Если хочется автоматизировать задачи очистки и оптимизации, можно воспользоваться плагинами:
- Clearfy Pro — мощный плагин для оптимизации WordPress, включая очистку неиспользуемых терминов и метаданных.
- WPRemark — позволяет создавать автоматические уведомления, которые можно настроить для контроля состояния таксономий.
Оба плагина помогают поддерживать базу данных в чистоте без ручного вмешательства.
Рекомендации по регулярной очистке и мониторингу
Чтобы не накапливались неиспользуемые термины, рекомендуется:
- Регулярно проверять базу данных с помощью SQL-запросов или функций.
- Настроить автоматические задачи (WP-Cron) для периодической очистки.
- Использовать плагины оптимизации, которые включают функции очистки таксономий.
- Делать резервные копии базы перед крупными изменениями.
Такой подход поможет избежать замедления сайта и ошибок, связанных с избыточными данными.
Заключение
Удаление неиспользуемых терминов таксономий — важная часть поддержки WordPress-сайта, особенно при больших объемах контента. Используя SQL-запросы, функции WordPress и специализированные плагины, вы сможете эффективно очищать базу данных, улучшая производительность и удобство администрирования.