В WordPress со временем накапливаются термины таксономий (категории, теги, кастомные таксономии), которые не привязаны ни к одной записи. Такие пустые термины занимают место в базе данных и могут замедлять работу сайта или создавать путаницу при администрировании. В этой статье мы подробно разберём, как найти и удалить пустые термины с помощью запросов к базе данных и программно, используя PHP. Также рассмотрим проверенные плагины, которые помогут автоматизировать этот процесс.
Почему важно удалять пустые термины в WordPress
Со временем на сайте появляются термины, которые перестают использоваться, например, категории или теги к удалённым записям. Они не несут никакой пользы и могут создавать следующие проблемы:
- Засорение базы данных — лишние записи увеличивают размер таблиц.
- Ошибки и путаница при выводе списков таксономий в админке.
- Влияние на SEO — поисковые системы могут индексировать пустые категории или теги.
- Сложность в управлении контентом.
Удаление пустых терминов помогает поддерживать базу данных в порядке и улучшить производительность сайта.
Как найти пустые термины через админ-панель WordPress
Поиск пустых терминов можно начать в стандартной админке. Для этого перейдите в раздел Записи > Рубрики или Записи > Метки. Здесь вы увидите столбец "Количество", который показывает, сколько записей связано с каждым термином.
Термины с нулевым значением — пустые. Их можно удалить вручную, но если таких много, это неудобно. Для массового удаления понадобятся другие методы.
Удаление пустых терминов с помощью SQL-запроса
Если у вас есть доступ к базе данных через phpMyAdmin или другой инструмент, можно удалить пустые термины напрямую запросом. В WordPress термины хранятся в таблицах wp_terms, wp_term_taxonomy и wp_term_relationships. Чтобы удалить пустые, нужно найти термины у которых count в wp_term_taxonomy равен нулю.
Пример SQL-запроса для удаления пустых терминов (категорий, тегов и кастомных таксономий):
DELETE t, tt FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.count = 0;
Обратите внимание, что префикс wp_ нужно заменить на ваш, если он отличается. Такой запрос удалит все термины с нулевым счётом, включая кастомные таксономии.
Что делает этот запрос?
- Соединяет таблицы
wp_termsиwp_term_taxonomyпоterm_id. - Фильтрует термины с
count = 0, то есть неиспользуемые. - Удаляет записи из обеих таблиц, чтобы не оставалось "битых" ссылок.
Программное удаление пустых терминов с помощью PHP
Если вы хотите встроить удаление пустых терминов в функционал сайта, можно написать функцию на PHP, которая будет искать и удалять такие термины.
function wpbook_delete_empty_terms() {
$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);
}
}
}
}
Эта функция получает все таксономии, затем все термины без скрытия пустых, после чего удаляет те, у которых счётчик записей равен нулю. Можно запускать эту функцию вручную или повесить на крон-задачу.
Пример использования через WP-Cron
Чтобы регулярно очищать базу, можно добавить планировщик:
add_action('wpbook_cron_delete_empty_terms', 'wpbook_delete_empty_terms');
if (!wp_next_scheduled('wpbook_cron_delete_empty_terms')) {
wp_schedule_event(time(), 'daily', 'wpbook_cron_delete_empty_terms');
}
Таким образом, функция будет запускаться ежедневно и удалять пустые термины автоматически.
Плагины для удаления пустых терминов
Если не хотите писать код, можно использовать готовые решения. Вот несколько полезных плагинов:
- Term Management Tools — расширяет стандартный функционал управления терминами, позволяет массово удалять пустые.
- WP Sweep — универсальный плагин для очистки базы, включая удаление пустых терминов с возможностью выбора таксономий.
- Advanced Database Cleaner — комплексный инструмент для оптимизации базы данных, включая очистку пустых терминов.
Все эти плагины доступны в репозитории WordPress, устанавливаются и настраиваются через админку.
Заключение: рекомендации по регулярной очистке и оптимизации
Поддержание базы данных в чистоте — важная часть администрирования WordPress. Удаление пустых терминов помогает избежать накопления "мусора" и повысить производительность сайта. Регулярно проверяйте таксономии на предмет пустых терминов и используйте автоматические скрипты или плагины для их удаления.
Если вы хотите более глубокую оптимизацию, советуем обратить внимание на плагины Clearfy Pro и WPBook, которые включают функции автоматической очистки и оптимизации базы данных. Подробнее вы можете узнать на странице Clearfy Pro.