Со временем на сайте WordPress могут накапливаться таксономии, которые не используются для классификации записей или продуктов. Это не только загромождает административную панель, но и может замедлять работу сайта, особенно при большом количестве данных. В этой статье мы подробно рассмотрим, как найти и удалить неиспользуемые таксономии вручную, без использования плагинов, с примерами кода и рекомендациями по оптимизации.
Что такое таксономии и почему важно удалять неиспользуемые
Таксономии в WordPress — это способы группировки контента. К ним относятся стандартные категории и метки, а также пользовательские таксономии, созданные разработчиками или плагинами. Если таксономия не используется ни в одной записи, она становится неактуальной и может занимать место в базе данных.
Удаление таких таксономий помогает:
- Сократить размер базы данных;
- Улучшить производительность запросов;
- Упростить админ-панель;
- Избежать путаницы для редакторов и администраторов.
Давайте разберёмся, как определить, какие таксономии не используются, и как их корректно удалить.
Как определить неиспользуемые таксономии: пошаговый разбор
Для начала нужно получить список всех зарегистрированных таксономий и проверить, есть ли у них связанные термины, которые используются в записях.
Вот пример функции, которая выводит список таксономий и количество связанных с ними терминов:
function wpset_list_taxonomies_usage() {
$taxonomies = get_taxonomies([], 'objects');
foreach ($taxonomies as $taxonomy) {
$terms = get_terms([
'taxonomy' => $taxonomy->name,
'hide_empty' => false,
]);
$term_count = 0;
foreach ($terms as $term) {
$term_count += $term->count;
}
echo 'Таксономия: ' . esc_html($taxonomy->name) . ' — Используется в ' . intval($term_count) . ' записях.<br>';
}
}Эта функция подсчитывает общее количество записей, связанных с каждым термином таксономии. Если сумма равна нулю — таксономия не используется.
Вы можете вызвать эту функцию, например, в шаблоне админки или через wp-cli для быстрого анализа.
Удаление неиспользуемых таксономий из базы данных
WordPress хранит термины таксономий в нескольких таблицах: wp_terms, wp_term_taxonomy и wp_term_relationships. Если таксономия не используется, можно безопасно удалить все связанные с ней записи из таблицы wp_term_taxonomy, а также термины из wp_terms, если они не связаны с другими таксономиями.
Ниже пример функции, которая удаляет все термины и таксономию по её имени. Внимание: перед выполнением таких действий обязательно сделайте резервную копию базы данных!
function wpset_delete_taxonomy_data($taxonomy_name) {
global $wpdb;
// Получаем все term_taxonomy_ids для указанной таксономии
$term_taxonomy_ids = $wpdb->get_col($wpdb->prepare(
"SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE taxonomy = %s",
$taxonomy_name
));
if (empty($term_taxonomy_ids)) {
echo 'Таксономия не найдена или уже пуста.';
return;
}
// Удаляем связи term_relationships
$ids_placeholder = implode(',', array_map('intval', $term_taxonomy_ids));
$wpdb->query("DELETE FROM {$wpdb->term_relationships} WHERE term_taxonomy_id IN ($ids_placeholder)");
// Удаляем term_taxonomy
$wpdb->query($wpdb->prepare(
"DELETE FROM {$wpdb->term_taxonomy} WHERE taxonomy = %s",
$taxonomy_name
));
// Опционально удаляем термины, которые больше нигде не используются
$wpdb->query("DELETE t FROM {$wpdb->terms} AS t LEFT JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id WHERE tt.term_id IS NULL");
echo 'Данные таксономии "' . esc_html($taxonomy_name) . '" удалены.';
}Вы можете вызвать эту функцию, передав имя таксономии, например:
wpset_delete_taxonomy_data('my_custom_taxonomy');Это удалит все термины и связи для указанной таксономии.
Как зарегистрировать таксономии с возможностью их легкой очистки
Чтобы в будущем проще управлять таксономиями, рекомендуется использовать префиксы в именах и аккуратно регистрировать их через хук init. Например:
function wpset_register_custom_taxonomy() {
register_taxonomy('wpset_project_type', ['project'], [
'label' => 'Типы проектов',
'hierarchical' => true,
'show_admin_column' => true,
]);
}
add_action('init', 'wpset_register_custom_taxonomy');Так вы всегда сможете быстро найти свои таксономии по префиксу wpset_ и при необходимости удалить неиспользуемые.
Пример использования плагина Clearfy Pro для оптимизации таксономий
Хотя мы рассматриваем удаление без плагинов, стоит упомянуть, что в Clearfy Pro есть удобные инструменты для оптимизации базы данных, включая очистку устаревших таксономий и терминов. Это может значительно упростить поддержку сайта, особенно при большом объёме данных.
Рекомендации по безопасному удалению таксономий
Перед удалением таксономий всегда:
- Делайте полную резервную копию базы данных;
- Проверяйте зависимости, чтобы не удалить данные, связанные с другими элементами сайта;
- Используйте тестовую среду для проверки кода;
- Обновляйте список таксономий после удаления, чтобы избежать ошибок;
- Если таксономия была зарегистрирована плагином — удаляйте её только после деактивации плагина.
Это поможет избежать потери важных данных и сбоев в работе сайта.
Выводы и полезные советы
Удаление неиспользуемых таксономий вручную — это эффективный способ оптимизировать базу данных WordPress и улучшить производительность сайта. При этом важно тщательно анализировать данные, использовать правильные SQL-запросы и соблюдать меры предосторожности.
Используйте описанные функции и подходы, чтобы поддерживать ваш сайт чистым и быстрым. А для регулярной оптимизации рекомендуем обратить внимание на плагины, такие как Clearfy Pro, которые автоматизируют многие процессы без риска.