В процессе разработки и эксплуатации WordPress-сайта часто накапливаются таксономии, которые больше не нужны — пользовательские категории, метки или любые другие таксономии, которые вы регистрировали для своих типов записей, но больше не используете. Они занимают место в базе данных, замедляют выборки и усложняют администрирование. В этой статье рассмотрим, как безопасно удалить неиспользуемые таксономии из WordPress, чтобы оптимизировать работу сайта.
Что такое таксономии и почему их нужно удалять
Таксономии в WordPress — это способ группировки записей. По умолчанию есть категории и метки, но разработчики часто добавляют свои, например, «Проекты», «Города», «Темы». Если таксономия перестала быть актуальной, она продолжает существовать в базе и влияет на запросы.
Удаление неиспользуемых таксономий помогает:
- Снизить нагрузку на базу данных;
- Избавиться от лишних элементов в административной панели;
- Упростить код и логику сайта;
- Повысить скорость загрузки страниц.
Однако удаление должно быть аккуратным, чтобы не потерять ценные данные и не вызвать ошибок.
Как проверить, какие таксономии не используются
Для начала нужно определить, какие таксономии в вашей базе существуют и сколько записей к ним привязано. Для этого можно использовать SQL-запросы или плагины:
Использование SQL-запроса
Подключитесь к базе данных через phpMyAdmin или другой клиент и выполните:
SELECT taxonomy, count(*) as count FROM wp_term_relationships tr JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id GROUP BY taxonomy ORDER BY count ASC;Этот запрос покажет количество записей, связанных с каждой таксономией. Если count = 0 или очень мало, возможно, таксономия не нужна.
Плагины для анализа таксономий
Плагин Clearfy Pro из wpshop.ru имеет инструменты для анализа и очистки базы данных, в том числе таксономий, что удобно для начинающих.
Удаление таксономии из кода
Самый безопасный способ — сначала удалить регистрацию таксономии в коде, чтобы WordPress перестал её использовать. Это делается через функцию register_taxonomy, обычно в functions.php или в плагине.
function clearfy_unregister_taxonomy() {
unregister_taxonomy('your_taxonomy_slug');
}
add_action('init', 'clearfy_unregister_taxonomy', 11);Обратите внимание, что WordPress не предоставляет встроенной функции unregister_taxonomy для полного удаления, но вызов выше отменит регистрацию таксономии на уровне интерфейса.
Для полного удаления нужно удалить все термины таксономии из базы.
Удаление терминов и связей таксономии из базы данных
После отмены регистрации таксономии следует удалить все данные, связанные с ней, чтобы очистить базу. Делать это нужно очень аккуратно:
global $wpdb;
$taxonomy = 'your_taxonomy_slug';
// Получаем ID term_taxonomy для удаления
$term_taxonomy_ids = $wpdb->get_col($wpdb->prepare("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE taxonomy = %s", $taxonomy));
if ($term_taxonomy_ids) {
// Удаляем связи с записями
$ids_string = implode(',', array_map('intval', $term_taxonomy_ids));
$wpdb->query("DELETE FROM {$wpdb->term_relationships} WHERE term_taxonomy_id IN ($ids_string)");
// Удаляем таксономии
$wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->term_taxonomy} WHERE taxonomy = %s", $taxonomy));
// Можно удалить термины, если они не используются в других таксономиях
$wpdb->query("DELETE t FROM {$wpdb->terms} t LEFT JOIN {$wpdb->term_taxonomy} tt ON t.term_id = tt.term_id WHERE tt.term_id IS NULL");
echo 'Таксономия и все её данные удалены.';
} else {
echo 'Таксономия не найдена или уже удалена.';
}Этот код можно выполнить через подключаемый плагин с функцией активации или через консоль WP-CLI.
Использование WP-CLI для удаления таксономий
WP-CLI — мощный инструмент для управления WordPress из консоли. С его помощью можно найти и удалить таксономии и термины без риска.
Пример команды для удаления терминов таксономии:
wp term delete your_taxonomy_slug $(wp term list your_taxonomy_slug --field=term_id)Это удалит все термины указанной таксономии.
Лучшие практики и рекомендации
- Перед удалением сделайте полную резервную копию базы данных.
- Сначала отключите регистрацию таксономии в коде, чтобы избежать ошибок на сайте.
- Проверьте, что таксономия не используется в шаблонах или плагинах.
- Удаляйте данные из базы только если уверены, что они не нужны.
- Для регулярной очистки используйте плагин Clearfy Pro, который автоматизирует многие процессы и снижает риски.
Заключение
Удаление неиспользуемых таксономий в WordPress — задача, требующая осторожности и понимания структуры базы данных. Следуя инструкциям и используя приведённые примеры кода, вы сможете безопасно очистить сайт, повысить его производительность и упростить администрирование.