Пустые термины таксономии — это категории, метки или другие таксономии, которые не связаны ни с одним постом или кастомным типом записи. Они создают мусор в базе данных, что замедляет работу сайта и усложняет управление контентом. В этой статье подробно разберём, как эффективно найти и удалить такие термины в WordPress программно и с помощью плагинов.
Что такое пустые термины таксономии и почему их нужно удалять
В WordPress таксономии используются для группировки контента по категориям, меткам и пользовательским наборам. Иногда при создании, импорте или удалении записей остаются термины, которые не используются ни в одном посте. Такие пустые термины:
- Загромождают интерфейс админки, усложняя выбор нужной категории или метки.
- Увеличивают размер таблиц в базе данных, снижая производительность.
- Могут приводить к путанице и ошибкам в работе тем и плагинов.
Регулярное удаление пустых терминов помогает поддерживать базу данных в порядке и ускоряет загрузку страниц.
Как найти пустые термины таксономии с помощью WP_Query и SQL
Для начала стоит определить, какие термины пустые. Можно воспользоваться двумя подходами — через SQL-запросы к базе данных или средствами WordPress.
SQL-запрос для поиска пустых терминов
Пустые термины — это те, у которых количество связанных записей (count) равно 0. Ниже пример запроса для поиска таких терминов в таксономии category:
SELECT t.term_id, t.name FROM wp_terms t INNER JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id WHERE tt.taxonomy = 'category' AND tt.count = 0;Этот запрос вернёт ID и названия всех пустых категорий. Аналогично можно заменить category на любую другую таксономию.
Использование WP_Term_Query для поиска пустых терминов
Можно программно получить пустые термины через класс WP_Term_Query, указав параметр hide_empty как true (для получения непустых) или false (для всех). Чтобы получить пустые — нужно получить все и отфильтровать:
function wpweb_get_empty_terms($taxonomy) {
$terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => false,
]);
$empty_terms = array_filter($terms, function($term) {
return $term->count === 0;
});
return $empty_terms;
}Этот код возвращает массив пустых терминов для указанной таксономии.
Автоматическое удаление пустых терминов: пример функции для wpweb.ru
Далее рассмотрим, как удалить пустые термины программно. Ниже — пример функции, которая удаляет все пустые термины указанной таксономии:
function wpweb_delete_empty_terms($taxonomy) {
$empty_terms = wpweb_get_empty_terms($taxonomy);
foreach ($empty_terms as $term) {
wp_delete_term($term->term_id, $taxonomy);
}
}Чтобы удалить пустые категории, вызовите:
wpweb_delete_empty_terms('category');Для меток — wpweb_delete_empty_terms('post_tag');.
Этот метод безопасен, так как использует стандартный API WordPress и учитывает все связанные данные.
Удаление пустых терминов с помощью плагинов
Если не хотите писать код, можно использовать плагины. Вот несколько, которые помогут управлять таксономиями и удалять пустые термины:
- Term Management Tools — добавляет возможность массового удаления терминов, включая пустые.
- WP Sweep — оптимизирует базу, включая очистку пустых терминов.
- Advanced Database Cleaner — мощный инструмент для чистки базы, удаляет мусорные термины.
После установки и активации рекомендуем сделать бэкап базы, а затем воспользоваться функциями очистки.
Как автоматизировать очистку пустых терминов через WP-Cron
Чтобы поддерживать базу данных в порядке, имеет смысл запускать очистку по расписанию. Добавим планировщик и функцию удаления пустых терминов для категории:
function wpweb_cron_delete_empty_terms() {
wpweb_delete_empty_terms('category');
}
if (!wp_next_scheduled('wpweb_cron_delete_empty_terms_hook')) {
wp_schedule_event(time(), 'daily', 'wpweb_cron_delete_empty_terms_hook');
}
add_action('wpweb_cron_delete_empty_terms_hook', 'wpweb_cron_delete_empty_terms');Этот код создаст ежедневное событие, которое будет удалять пустые категории. При необходимости добавьте другие таксономии.
Важные рекомендации и нюансы при удалении терминов
Перед удалением пустых терминов учтите следующие моменты:
- Всегда делайте резервную копию базы данных перед массовыми операциями.
- Проверяйте, что удаляемые термины действительно не используются — иногда count может быть 0 из-за кэширования.
- Для кастомных таксономий убедитесь, что удаление не нарушит работу сайта и плагинов.
- Если используете WooCommerce, не удаляйте термины, связанные с товарами без проверки.
Также полезно периодически оптимизировать таблицы базы данных с помощью плагинов вроде Clearfy Pro, который помогает очищать неиспользуемые данные и ускоряет сайт.
Выводы и практические советы
Удаление пустых терминов таксономии — важный этап технической оптимизации WordPress. Это помогает поддерживать базу в чистоте и повышать скорость работы сайта. Используйте приведённые функции для поиска и удаления пустых терминов, автоматизируйте процесс через WP-Cron и применяйте плагины для удобства.
Если хотите расширить функциональность, рекомендуем изучить плагины WPRemark для модерации комментариев и Reboot — современную тему с оптимизацией под SEO и скорость.