В процессе работы с WordPress накапливаются различные таксономии — категории, метки и кастомные таксономии, которые со временем могут стать неактуальными или вовсе неиспользуемыми. Они занимают место в базе данных и могут замедлять работу сайта. В этой статье разберём, как найти и корректно удалить такие таксономии, чтобы оптимизировать производительность и упростить управление контентом.
Что такое таксономии в WordPress и почему важно их чистить
Таксономии — это способ группировки записей и других типов контента в WordPress. Помимо стандартных category и tag, часто используются кастомные таксономии, добавляемые плагинами или темами. Со временем часть из них перестаёт использоваться, но остаётся в базе, что приводит к:
- Загромождению базы данных и увеличению её размера.
- Усложнению интерфейса администратора и путанице при выборе таксономий.
- Потенциальному конфликту и ошибкам в работе плагинов или тем.
Регулярная очистка неиспользуемых таксономий помогает поддерживать сайт в хорошем состоянии и ускоряет загрузку страниц, особенно если на сайте много записей.
Как определить неиспользуемые таксономии
Первый шаг — выявить, какие таксономии не используются. Стандартные таксономии WordPress всегда используются, а вот кастомные могут быть неактивны. Делать это можно несколькими способами:
1. Использование SQL-запроса к базе данных
Подключитесь к базе данных через phpMyAdmin или другой клиент и выполните запрос, который покажет количество терминов для каждой таксономии:
SELECT taxonomy, COUNT(object_id) 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;Результат покажет, сколько записей связано с каждой таксономией. Таксономии с нулевым счётом — кандидаты на удаление.
2. Использование плагина WP-Optimize
Плагин WP-Optimize позволяет просматривать таблицы базы данных и помогает удалять неиспользуемые данные, включая термины и таксономии.
3. Программный способ проверки через PHP
Можно написать сниппет, который выведет список таксономий с количеством связанных записей:
function wpmagazin_list_unused_taxonomies() {
$taxonomies = get_taxonomies([], 'objects');
foreach ( $taxonomies as $taxonomy ) {
$count = wp_count_terms($taxonomy->name);
echo $taxonomy->name . ': ' . $count . ' терминов <br>';
}
}
wpmagazin_list_unused_taxonomies();Это поможет быстро оценить использование таксономий прямо из кода.
Как корректно удалить неиспользуемые таксономии
Удаление таксономии требует аккуратности, чтобы не повредить данные и не вызвать ошибок. Существует несколько шагов:
1. Удаление терминов таксономии из базы данных
Если таксономия не используется, можно удалить все её термины через SQL:
DELETE FROM wp_terms WHERE term_id IN (
SELECT term_id FROM wp_term_taxonomy WHERE taxonomy = 'your_taxonomy'
);
DELETE FROM wp_term_taxonomy WHERE taxonomy = 'your_taxonomy';
DELETE FROM wp_term_relationships WHERE term_taxonomy_id NOT IN (SELECT term_taxonomy_id FROM wp_term_taxonomy);Замените your_taxonomy на имя таксономии. Важно сделать резервную копию базы перед выполнением таких операций.
2. Отключение регистрации таксономии в коде
Если таксономия добавлялась через код темы или плагина, нужно удалить или закомментировать соответствующий вызов register_taxonomy, иначе WordPress будет пытаться её регистрировать при каждой загрузке.
3. Использование плагинов для управления таксономиями
Плагин Clearfy Pro помогает в оптимизации сайта и может быть использован для безопасного отключения и удаления неиспользуемых таксономий без риска повредить сайт.
Пример функции для автоматического удаления таксономии
Ниже пример функции, которая удалит всю информацию о неиспользуемой таксономии «old_taxonomy» из базы данных и отключит её регистрацию:
function wpmagazin_remove_old_taxonomy() {
global $wpdb;
$taxonomy = 'old_taxonomy';
// Удаляем связи терминов с объектами
$wpdb->query( $wpdb->prepare(
"DELETE tr FROM {$wpdb->term_relationships} tr
INNER JOIN {$wpdb->term_taxonomy} tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy = %s",
$taxonomy
) );
// Удаляем записи таксономии
$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"
);
}
add_action('init', 'wpmagazin_remove_old_taxonomy', 100);Эту функцию следует использовать с осторожностью и только после создания резервной копии базы.
Советы по профилактике захламления таксономиями
Чтобы не допускать накопления неиспользуемых таксономий, придерживайтесь следующих рекомендаций:
- Регулярно анализируйте свой сайт и базу данных, удаляйте устаревшие таксономии.
- Перед установкой новых плагинов проверяйте, какие таксономии они создают.
- Используйте инструменты оптимизации, например Clearfy Pro, для автоматизированного управления.
- При удалении плагинов, которые создавали кастомные таксономии, обязательно удаляйте и связанные с ними данные.
Очищенный от неиспользуемых таксономий сайт работает быстрее, база данных легче обслуживается, а управление контентом становится проще. Следуйте этим практическим советам, и ваш WordPress будет всегда в порядке.