WordPress по умолчанию использует несколько таксономий, таких как категории и метки, но при установке плагинов и тем могут появляться дополнительные пользовательские таксономии. Со временем некоторые из них перестают использоваться, но остаются в базе данных, что негативно сказывается на производительности и удобстве управления сайтом. В этой статье мы рассмотрим, как найти и удалить неиспользуемые таксономии в WordPress, а также приведём примеры кода и полезные плагины для решения этой задачи.
Что такое таксономии в WordPress и зачем удалять неиспользуемые
Таксономии — это способ группировки записей, страниц и кастомных типов записей. Стандартные таксономии — категории (category) и метки (post_tag), а также пользовательские, создаваемые разработчиками тем и плагинов. Если таксономия не используется, она занимает место в базе данных, замедляет запросы и усложняет администрирование.
Удаление неиспользуемых таксономий позволяет:
- Оптимизировать базу данных, уменьшив её размер.
- Ускорить загрузку страниц за счёт уменьшения количества запросов.
- Упростить интерфейс админ-панели, убрав лишние пункты меню.
- Снизить риск конфликтов с другими плагинами и темами.
Как определить, какие таксономии не используются
Для начала нужно выявить, какие таксономии зарегистрированы и есть ли у них записи. Сделать это можно несколькими способами.
1. Просмотр зарегистрированных таксономий
Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин, чтобы вывести список всех таксономий:
function wplite_list_taxonomies() {
$taxonomies = get_taxonomies([], 'objects');
echo '<pre>';
foreach ($taxonomies as $taxonomy) {
echo 'Таксономия: ' . $taxonomy->name . ' - ' . $taxonomy->label . "\n";
}
echo '</pre>';
}
add_action('admin_notices', 'wplite_list_taxonomies');
Этот код выведет список всех таксономий в верхней части админки. По названию и описанию можно понять, какие из них вам неизвестны или неиспользуемы.
2. Проверка количества записей в таксономии
Для каждой таксономии полезно узнать, есть ли к ней привязанные записи. Вот функция, которая выводит количество объектов для каждой таксономии:
function wplite_taxonomy_counts() {
$taxonomies = get_taxonomies([], 'names');
foreach ($taxonomies as $taxonomy) {
$terms = get_terms(['taxonomy' => $taxonomy, 'hide_empty' => false]);
$count = 0;
foreach ($terms as $term) {
$count += $term->count;
}
echo 'Таксономия ' . $taxonomy . ' содержит ' . $count . ' записей.<br>';
}
}
add_action('admin_notices', 'wplite_taxonomy_counts');
Если количество записей равно нулю, скорее всего, таксономия неиспользуема.
Удаление таксономий: что важно знать
WordPress не предоставляет стандартных средств для удаления таксономий из базы данных, особенно если они зарегистрированы плагинами или темой. Чтобы удалить таксономию, нужно:
- Отменить регистрацию таксономии в коде (удалить или закомментировать соответствующий
register_taxonomy). - Удалить термины и связи в базе данных, так как они не удаляются автоматически.
Если таксономия зарегистрирована плагином, посмотрите, можно ли отключить или удалить этот плагин. Если нет — придётся создавать кастомный код для очистки.
Как удалить термины неиспользуемой таксономии программно
Пример функции, которая удаляет все термины определённой таксономии и очищает связи:
function wplite_delete_taxonomy_terms($taxonomy) {
if (!taxonomy_exists($taxonomy)) {
return 'Таксономия не найдена';
}
$terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => false,
]);
foreach ($terms as $term) {
wp_delete_term($term->term_id, $taxonomy);
}
global $wpdb;
// Удаляем связи с записями в таблице term_relationships
$term_taxonomy_ids = $wpdb->get_col($wpdb->prepare(
"SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE taxonomy = %s",
$taxonomy
));
if (!empty($term_taxonomy_ids)) {
foreach ($term_taxonomy_ids as $tt_id) {
$wpdb->delete($wpdb->term_relationships, ['term_taxonomy_id' => $tt_id]);
}
$wpdb->delete($wpdb->term_taxonomy, ['taxonomy' => $taxonomy]);
}
return 'Таксономия ' . $taxonomy . ' успешно очищена';
}
Вызовите функцию с нужным именем таксономии, например:
add_action('admin_init', function() {
echo wplite_delete_taxonomy_terms('old_taxonomy');
});
После очистки удалите регистрацию таксономии из кода.
Использование плагинов для управления таксономиями
Если вы не хотите работать с кодом, можно использовать плагины для управления таксономиями:
- Remove Taxonomy — простой плагин для удаления пользовательских таксономий.
- Clearfy Pro — комплексный инструмент оптимизации, который включает функционал для отключения и скрытия неиспользуемых таксономий и других элементов.
Clearfy Pro особенно полезен, если вы хотите не просто удалить таксономии, а комплексно оптимизировать сайт без глубоких технических знаний.
Советы по безопасности и резервному копированию
Перед удалением таксономий и терминов обязательно сделайте резервную копию базы данных. Ошибки могут привести к потере данных, особенно если таксономия используется в каком-то функционале.
Для создания резервной копии можно использовать плагины, например, Backup WP или любой другой проверенный инструмент.
Выводы и рекомендации
Удаление неиспользуемых таксономий — важный этап технической оптимизации WordPress-сайта. Сначала внимательно проанализируйте, какие таксономии есть, и есть ли у них записи. Затем удалите термины и связи программно или с помощью плагинов, а после — удалите регистрацию таксономий из кода.
Используйте Clearfy Pro для комплексной оптимизации и упрощения управления неиспользуемыми элементами WordPress. Не забывайте делать резервные копии перед изменениями.