В процессе активной работы с WordPress-ресурсом часто появляются таксономии и термины, которые со временем перестают использоваться. Их наличие может замедлять работу сайта, создавать путаницу в админке и ухудшать SEO. В этой статье мы подробно разберём, как безопасно и эффективно удалить неиспользуемые таксономии и термины в WordPress, используя как готовые плагины, так и собственные решения на PHP.
Что такое таксономии и термины в WordPress и почему их стоит удалять
Таксономии — это способ группировки контента. В WordPress по умолчанию есть категории и метки, но разработчики часто регистрируют свои пользовательские таксономии. Термины — это конкретные элементы внутри таксономии, например, отдельная категория или метка.
За время работы сайта появляются термины, к которым не прикреплен ни один пост или другой тип записи. Такие "пустые" термины не несут пользы и создают лишний шум в базе данных и интерфейсе. Их удаление помогает:
- Снизить нагрузку на базу данных;
- Упростить админку;
- Сделать структуру сайта более чистой и понятной;
- Избежать ошибок в отображении навигации или виджетов.
Как найти неиспользуемые термины через админку и плагины
Самый простой способ — использовать плагины, которые анализируют таксономии и показывают пустые термины. К популярным относятся:
- Term Management Tools — позволяет объединять, удалять и редактировать термины;
- Cleanup Terms — автоматически находит и удаляет пустые термины;
- Clearfy Pro — комплексный плагин для оптимизации, содержит инструменты для чистки базы и удаления пустых терминов.
Использование плагинов удобно, но не всегда даёт полный контроль и не всегда безопасно на больших проектах.
Удаление пустых терминов через SQL-запросы: осторожно и эффективно
Для опытных разработчиков можно использовать SQL-запросы для удаления терминов, не связанных с записями. Важно сделать резервную копию базы перед выполнением.
Пример запроса для удаления терминов без связей:
DELETE t, tt, tr
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
LEFT JOIN wp_term_relationships AS tr ON tt.term_taxonomy_id = tr.term_taxonomy_id
WHERE tr.object_id IS NULL;
Этот запрос удалит все термины, у которых нет связей с объектами (постами, страницами и т.д.). Обратите внимание на префиксы таблиц (wp_), они могут отличаться на вашем сайте.
Автоматизация удаления неиспользуемых терминов на PHP
Если вы хотите регулярно очищать базу от пустых терминов, можно создать кастомный скрипт или плагин с подобной функцией. Пример простой функции в стиле WPReg, которую можно добавить в functions.php или свой плагин:
function wpreg_delete_unused_terms() {
$taxonomies = get_taxonomies([], 'names');
foreach ($taxonomies as $taxonomy) {
$terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => true,
'fields' => 'ids',
]);
$all_terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => false,
'fields' => 'ids',
]);
$unused_terms = array_diff($all_terms, $terms);
foreach ($unused_terms as $term_id) {
wp_delete_term($term_id, $taxonomy);
}
}
}
// Запуск функции можно привязать к крону или запускать вручную
// wpreg_delete_unused_terms();
Эта функция перебирает все таксономии, получает список используемых и всех терминов, затем находит и удаляет неиспользуемые.
Особенности при работе с пользовательскими таксономиями и плагинами
При удалении терминов из кастомных таксономий важно учитывать, что некоторые плагины могут использовать термины для своих настроек, фильтрации или логики. Поэтому перед удалением стоит:
- Проверить, не связано ли удаление с функционалом сайта;
- Ознакомиться с документацией плагинов;
- Выполнить удаление на тестовой копии сайта;
- Использовать инструменты резервного копирования.
Например, если вы используете Expert Review или Quizle, которые могут создавать свои таксономии, не стоит удалять термины без проверки.
Советы по предотвращению накопления неиспользуемых терминов
Чтобы минимизировать появление «мусорных» терминов:
- Используйте ограничения при регистрации таксономий (например, запрет на создание новых терминов пользователями без проверки);
- Регулярно проверяйте базу на наличие пустых терминов;
- Удаляйте ненужные таксономии и связанные с ними термины при удалении плагинов;
- Автоматизируйте очистку, например, с помощью WP-Cron и функции из предыдущего раздела.
Заключение
Удаление неиспользуемых таксономий и терминов — важный шаг для поддержания производительности и порядка на WordPress-сайте. Используйте плагины для удобства, SQL-запросы для точечного контроля и автоматизацию на PHP для регулярной чистки. Обязательно делайте резервные копии и тестируйте изменения.
Если вы хотите расширить функционал по оптимизации, обратите внимание на Clearfy Pro — он отлично помогает очищать базу и оптимизировать работу сайта.