Диагностика проблемы: зачем удалять неиспользуемые таксономии
Со временем в WordPress накапливаются таксономии, которые больше не нужны — например, после удаления плагинов или тем, которые их регистрировали. Эти таксономии продолжают занимать место в базе данных, замедляют запросы и создают путаницу в админке. Чтобы улучшить производительность и упростить структуру сайта, их стоит удалить.
Как проверить, какие таксономии зарегистрированы и не используются
Для диагностики выполните следующий код в файле темы functions.php или через плагин для сниппетов:
add_action('admin_notices', function() {
$taxonomies = get_taxonomies([], 'objects');
foreach ($taxonomies as $tax) {
// Выводим только пользовательские таксономии, исключая стандартные
if (!in_array($tax->name, ['category', 'post_tag', 'nav_menu', 'link_category', 'post_format'])) {
$count = wp_count_terms($tax->name);
printf('<div><strong>%s</strong> — %d терминов</div>', $tax->label, $count);
}
}
});В админке вверху появится список пользовательских таксономий с количеством терминов. Если у таксономии 0 терминов, значит она не используется.
Пошаговое решение: удаление неиспользуемых таксономий
Удалить таксономию в WordPress нельзя стандартными средствами — нужно:
- Выяснить, какой код регистрирует таксономию.
- Удалить или закомментировать этот код (обычно в плагине или functions.php).
- Удалить записи из таблиц базы данных.
Если таксономия регистрируется плагином, лучше отключить плагин. Если код в теме, удалите регистрацию.
Пример кода регистрации таксономии:
function my_register_taxonomy() {
register_taxonomy('my_taxonomy', 'post', [
'label' => 'Моя таксономия',
'public' => true,
'rewrite' => ['slug' => 'my-taxonomy'],
]);
}
add_action('init', 'my_register_taxonomy');Чтобы удалить таксономию, удалите или закомментируйте этот код и очистите базу.
Удаление терминов и метаданных таксономии из базы данных
Для полной очистки выполните SQL-запросы (через phpMyAdmin или WP CLI):
DELETE FROM wp_term_relationships WHERE term_taxonomy_id IN (
SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE taxonomy = 'my_taxonomy'
);
DELETE FROM wp_term_taxonomy WHERE taxonomy = 'my_taxonomy';
DELETE FROM wp_terms WHERE term_id NOT IN (
SELECT term_id FROM wp_term_taxonomy
);Обязательно сделайте резервную копию базы перед выполнением.
Проверка результата после удаления таксономии
1. Убедитесь, что таксономия больше не отображается в админке.
2. Проверьте базу данных, выполнив:
SELECT * FROM wp_term_taxonomy WHERE taxonomy = 'my_taxonomy';Запрос должен возвращать пустой результат.
3. Проверьте фронтенд сайта на отсутствие ошибок и ссылок на удалённую таксономию.
Частые ошибки и как их исправить
- Таксономия продолжает отображаться в админке — проверьте, что код регистрации полностью удалён или плагин отключён.
- Ошибка в SQL-запросах — убедитесь, что таблицы имеют правильный префикс
wp_или используйте актуальный префикс изwp-config.php. - Потеря данных — всегда делайте бэкап перед удалением.
- Ошибки на сайте после удаления — возможно, где-то есть вызовы несуществующей таксономии, проверьте шаблоны и плагины.
Практические советы по безопасности и производительности
- Удаляйте неиспользуемые таксономии только после тестирования на тестовом сайте.
- Используйте WP-CLI для безопасной работы с базой:
wp db query 'SQL-запрос'. - Для регулярной проверки используйте сниппеты диагностики, чтобы отслеживать новые неиспользуемые таксономии.
- Если таксономий много, рассмотрите автоматизацию очистки с помощью кастомного скрипта, который будет запускаться через WP-Cron.
Сравнение методов удаления таксономий
| Метод | Преимущества | Недостатки |
|---|---|---|
| Ручное удаление кода и SQL-запросы | Точный контроль, бесплатно | Риск ошибок, требует знаний SQL и PHP |
| Отключение плагина, регистрирующего таксономию | Просто, безопасно | Потеря функционала плагина |
| Использование плагинов для удаления таксономий | Удобно, без кода | Дополнительные плагины могут замедлить сайт |