В процессе разработки и поддержки сайта на WordPress часто накапливаются таксономии, которые уже не используются или создают лишний шум в админке и базе данных. Неиспользуемые таксономии могут замедлять работу сайта, усложнять администрирование и создавать проблемы с SEO из-за лишних архивных страниц. В этой статье подробно разберём, как найти и безопасно удалить неиспользуемые таксономии из WordPress, с примерами кода и полезными советами.
Что такое таксономии в WordPress и зачем их удалять
Таксономии — это способ группировки записей на сайте. Стандартные таксономии — это категории и метки, но помимо них можно создавать кастомные таксономии для удобной организации контента. Иногда после тестов или отключения плагинов остаются таксономии, которые уже не используются, но продолжают занимать место в базе и отображаться в админке.
Удаление неиспользуемых таксономий позволяет:
- Оптимизировать базу данных и снизить нагрузку на сайт;
- Улучшить пользовательский опыт администраторов и редакторов;
- Избежать появления пустых архивных страниц, которые вредят SEO;
- Избавиться от конфликтов и ошибок, связанных с устаревшими таксономиями.
Как определить, какие таксономии не используются
Прежде чем удалять таксономии, нужно точно понять, какие из них не используются. Вот несколько способов:
1. Проверка через админку WordPress
В разделе «Записи» или «Произвольные типы записей» проверьте наличие таксономий в боковой панели. Если таксономия есть, но не содержит ни одной записи, вероятно, она не используется.
2. Использование SQL-запросов к базе данных
Можно выполнить запрос для подсчёта количества записей, связанных с таксономией. Например, для таксономии с именем my_taxonomy:
SELECT COUNT(*) FROM wp_term_relationships tr
JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy = 'my_taxonomy';
Если результат равен 0, значит таксономия не связана ни с одной записью.
3. Плагины для анализа таксономий
Существует несколько плагинов, которые помогают выявить неиспользуемые таксономии, например, WP Unused Taxonomies. Они показывают список всех таксономий и количество связанных с ними записей.
Как безопасно удалить неиспользуемые таксономии
Удаление таксономий в WordPress требует аккуратности, чтобы не нарушить работу сайта. Таксономии можно удалить следующим образом:
1. Отмена регистрации таксономии
Таксономии регистрируются с помощью функции register_taxonomy. Чтобы удалить таксономию, нужно перестать её регистрировать. Найдите в теме или плагинах код, где вызывается register_taxonomy для нужной таксономии, и закомментируйте или удалите его.
Если таксономия была зарегистрирована в плагине, отключите или удалите этот плагин.
2. Очистка данных из базы
После отмены регистрации таксономии записи, связанные с ней, перестанут отображаться, но данные о терминах останутся в базе. Чтобы полностью удалить таксономию и связанные с ней термины, выполните SQL-запросы:
DELETE tt, tr, t FROM wp_term_taxonomy tt
LEFT JOIN wp_term_relationships tr ON tt.term_taxonomy_id = tr.term_taxonomy_id
LEFT JOIN wp_terms t ON tt.term_id = t.term_id
WHERE tt.taxonomy = 'my_taxonomy';
Обязательно сделайте резервную копию базы перед выполнением подобных запросов.
3. Использование WP-CLI для удаления таксономий
Если у вас есть доступ к консоли и установлен WP-CLI, можно использовать команды для удаления терминов таксономии:
wp term list my_taxonomy --field=term_id | xargs -n1 -I % wp term delete my_taxonomy % --force
Это удалит все термины указанной таксономии.
Пример функции для автоматического удаления неиспользуемых таксономий (wpcourse)
Ниже пример функции, которая проверяет таксономии и удаляет термины, если у них нет связанных записей. Такой код стоит запускать один раз вручную или через WP-CLI, чтобы не навредить сайту.
function wpcourse_remove_unused_taxonomies() {
$taxonomies = get_taxonomies([], 'names');
foreach ($taxonomies as $taxonomy) {
$terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => false,
]);
foreach ($terms as $term) {
if ($term->count === 0) {
wp_delete_term($term->term_id, $taxonomy);
}
}
}
}
// Запуск функции один раз
// wpcourse_remove_unused_taxonomies();
Данная функция перебирает все таксономии и удаляет термины без связанных записей. Важно отключить регистрацию самой таксономии, чтобы избежать ошибок после удаления.
Рекомендации и полезные плагины для работы с таксономиями
Для удобного управления таксономиями рекомендую обратить внимание на следующие инструменты:
- Clearfy Pro — помогает оптимизировать работу сайта, в том числе контролировать неиспользуемые элементы WordPress. Подробнее на официальной странице.
- Custom Post Type UI — удобный плагин для создания и управления таксономиями и типами записей.
- WP Optimize — плагин для очищения базы данных, который может помочь удалить устаревшие таксономии и термины.
Используя эти инструменты и рекомендации, вы сможете поддерживать вашу WordPress-систему в чистоте и порядке, что положительно скажется на производительности и удобстве администрирования.