Таксономии в WordPress — это способ группировки записей, страниц и других типов контента. Классические примеры таксономий — категории и метки. Однако со временем на сайте могут накапливаться неиспользуемые таксономии, особенно если вы пробовали различные плагины или темы, которые регистрировали свои собственные. Это негативно сказывается на производительности сайта и усложняет управление контентом.
Почему важно удалять неиспользуемые таксономии в WordPress
Неиспользуемые таксономии создают лишнюю нагрузку на базу данных. Каждый запрос к базе становится медленнее из-за увеличенного объема данных. Кроме того, неактуальные таксономии могут путать редакторов и администраторов сайта, мешать SEO-оптимизации и создавать проблемы при миграции или резервном копировании.
Удаление таких таксономий помогает:
- Ускорить работу сайта;
- Снизить размер базы данных;
- Упростить структуру контента;
- Избежать конфликтов с новыми плагинами.
Давайте разберемся, как найти и удалить неиспользуемые таксономии.
Как определить неиспользуемые таксономии на сайте
Для начала нужно получить список всех зарегистрированных таксономий и проверить, какие из них реально используются.
Для получения всех таксономий используйте функцию get_taxonomies() с параметром 'public' => true, чтобы получить только публичные таксономии. Затем для каждой таксономии можно проверить количество связанных с ней записей.
function wplab_get_unused_taxonomies() {
$unused = [];
$taxonomies = get_taxonomies(['public' => true], 'objects');
foreach ($taxonomies as $taxonomy) {
$count = wp_count_terms($taxonomy->name);
if ($count === 0) {
$unused[] = $taxonomy->name;
}
}
return $unused;
}Эта функция вернет массив с названиями таксономий, у которых нет ни одного термина. Обычно именно такие таксономии можно рассматривать как кандидатов на удаление.
Проверка использования таксономий в коде и плагинах
Перед удалением важно убедиться, что таксономия не используется в коде темы или плагинах для важных функций. Для этого можно:
- Провести поиск по проекту (IDE или grep) по названию таксономии;
- Оценить, не влияет ли удаление на функционал сайта;
- Сделать резервную копию базы данных на всякий случай.
Удаление неиспользуемых таксономий программно
WordPress не предоставляет простого способа удалить таксономии, зарегистрированные функцией register_taxonomy(), поскольку регистрация происходит в коде. Однако можно удалить все термины таксономии и деактивировать регистрацию таксономии, чтобы она не мешала.
Если вы хотите полностью удалить таксономию, нужно:
- Удалить термины таксономии из базы;
- Прекратить регистрацию таксономии (удалить или закомментировать код регистрации в теме или плагине);
- Очистить данные из таблиц базы.
Пример удаления всех терминов таксономии:
function wplab_delete_taxonomy_terms($taxonomy) {
$terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => false,
'fields' => 'ids'
]);
if (!empty($terms) && !is_wp_error($terms)) {
foreach ($terms as $term_id) {
wp_delete_term($term_id, $taxonomy);
}
}
}Вызовите эту функцию для неиспользуемой таксономии, чтобы удалить все ее термины, например:
wplab_delete_taxonomy_terms('my_custom_taxonomy');После этого вы можете удалить или отключить регистрацию таксономии в коде.
Использование плагинов для управления таксономиями
Если вы не хотите работать напрямую с кодом, есть несколько плагинов, которые помогут управлять таксономиями и терминами:
- WP Term Management Tools — позволяет массово удалять, переносить и объединять термины;
- Taxonomy Manager — удобный интерфейс для управления таксономиями и терминами;
- Advanced Database Cleaner — помогает находить и удалять неиспользуемые данные, включая таксономии;
Эти плагины помогут очистить базу без ручного вмешательства в код.
Пример использования WP Term Management Tools
После установки и активации плагина перейдите в раздел «Инструменты» > «Term Management», выберите таксономии с пустыми терминами и удалите их массово.
Оптимизация базы данных после удаления таксономий
После удаления таксономий и терминов рекомендуется оптимизировать базу данных. Для этого можно использовать плагин WP-Optimize или выполнить SQL-запросы напрямую.
Например, удаление записей из таблиц wp_term_taxonomy и wp_terms, которые не используются, можно выполнить так:
DELETE tt, t
FROM wp_term_taxonomy tt
LEFT JOIN wp_terms t ON tt.term_id = t.term_id
WHERE tt.taxonomy = 'my_custom_taxonomy';Будьте очень аккуратны и делайте резервные копии перед выполнением таких запросов.
Автоматизация поиска и удаления неиспользуемых таксономий с помощью WP-CLI
Если у вас есть доступ к командной строке сервера, WP-CLI значительно упрощает работу с таксономиями.
Команда для получения списка всех таксономий:
wp taxonomy list --format=tableПроверить количество терминов в таксономии можно через пользовательский скрипт или с помощью SQL-запросов.
Автоматизация удаления терминов:
wp term delete my_custom_taxonomy $(wp term list my_custom_taxonomy --field=term_id)Это удалит все термины таксономии my_custom_taxonomy.
Выводы и рекомендации
Удаление неиспользуемых таксономий в WordPress — важный шаг для поддержания чистоты и производительности сайта. Прежде чем удалять, обязательно убедитесь, что таксономия не нужна для текущей функциональности. Используйте предложенные функции и плагины для безопасного поиска и удаления.
Всегда делайте резервные копии базы данных перед изменениями и тестируйте на локальной копии сайта.