В процессе работы с WordPress часто накапливаются пустые термины таксономий — категории, метки или кастомные таксономии, к которым не привязаны записи. Эти термины не только засоряют базу данных, но и могут мешать навигации и ухудшать SEO. В этой статье рассмотрим, как быстро и эффективно удалить пустые термины таксономий с помощью кода и плагинов.
Что такое пустые термины таксономий и почему их нужно удалять
Таксономии в WordPress — это способ группировки записей. Например, категории и метки — стандартные таксономии. При удалении или изменении записей иногда остаются термины, у которых нет связанных записей — они считаются пустыми.
Проблемы с пустыми терминами:
- Они засоряют админку и усложняют выбор нужных терминов.
- Могут создавать дублированные страницы архивов с пустым контентом.
- Отрицательно влияют на SEO, так как поисковики индексируют пустые страницы.
- Увеличивают размер базы данных без пользы.
Удаление пустых терминов — важный этап оптимизации и поддержания чистоты сайта.
Как проверить пустые термины в WordPress
Для начала нужно понять, какие именно термины пустые. В админке WordPress по умолчанию не видно количества привязанных записей у кастомных таксономий, а для стандартных — количество отображается рядом с термином.
Чтобы получить список пустых терминов программно, можно использовать WP_Query и функции таксономий.
Пример функции для получения пустых терминов
function wpload_get_empty_terms($taxonomy = 'category') {
$terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => true, // True - вернет только непустые
]);
$all_terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => false, // Все термины
]);
$empty_terms = array_diff_key(
array_flip(wp_list_pluck($all_terms, 'term_id')),
array_flip(wp_list_pluck($terms, 'term_id'))
);
return array_keys($empty_terms);
}Эта функция вернет массив ID пустых терминов для указанной таксономии. По умолчанию — категории.
Удаление пустых терминов через WP CLI
Если у вас есть доступ к командной строке, WP CLI — отличный инструмент для массовых операций с WordPress, включая удаление пустых терминов.
Для этого можно использовать следующую команду:
wp term list category --field=term_id --hide_empty=0 | xargs -I % wp term delete category % --forceЭта команда сначала показывает все термины категории, включая пустые (--hide_empty=0), а затем удаляет их (--force гарантирует удаление без дополнительного подтверждения). Важно убедиться, что удаляются именно пустые термины, чтобы не потерять нужные данные.
Удаление пустых терминов с помощью PHP-кода
Если WP CLI недоступен, можно написать функцию, которая удалит пустые термины. Ниже пример для удаления пустых категорий:
function wpload_delete_empty_terms($taxonomy = 'category') {
$empty_terms_ids = wpload_get_empty_terms($taxonomy);
foreach ($empty_terms_ids as $term_id) {
wp_delete_term($term_id, $taxonomy);
}
}
// Запускаем удаление пустых категорий
wpload_delete_empty_terms('category');Для кастомных таксономий замените 'category' на нужное имя таксономии.
Важно: перед запуском такого кода сделайте резервную копию базы данных.
Автоматизация очистки с помощью хуков
Можно добавить вызов удаления пустых терминов, например, при обновлении записей или по расписанию с помощью WP Cron:
add_action('wpload_delete_empty_terms_cron', function() {
wpload_delete_empty_terms('category');
wpload_delete_empty_terms('post_tag');
});
if (!wp_next_scheduled('wpload_delete_empty_terms_cron')) {
wp_schedule_event(time(), 'daily', 'wpload_delete_empty_terms_cron');
}Это позволит раз в день автоматически очищать пустые категории и метки.
Использование плагинов для удаления пустых терминов
Если вы предпочитаете графический интерфейс, можно использовать плагины. Например:
- Term Management Tools — позволяет массово удалять термины и объединять их.
- Bulk Delete — плагин с возможностью удаления постов и терминов по различным условиям.
Однако большинство таких плагинов не выделяют отдельно пустые термины, поэтому придется использовать фильтры или дополнительные настройки.
Если вы используете плагин Clearfy Pro, в нем есть инструменты для очистки базы данных, включая управление таксономиями. Это удобно для комплексной оптимизации сайта без ручного кода.
Оптимизация базы данных после удаления пустых терминов
После удаления пустых терминов рекомендуется оптимизировать таблицы базы данных, чтобы освободить место и улучшить производительность.
Для этого можно использовать плагин Clearfy Pro или выполнять SQL-запросы напрямую:
OPTIMIZE TABLE wp_terms;
OPTIMIZE TABLE wp_term_taxonomy;
OPTIMIZE TABLE wp_term_relationships;Выполняйте эти операции с осторожностью и обязательно делайте резервные копии.
Выводы и рекомендации
Удаление пустых терминов таксономий — важный этап в поддержании чистоты и производительности сайта на WordPress. Используйте программные методы, WP CLI или проверенные плагины для автоматизации процесса.
Для регулярной очистки можно настроить cron-задачи, чтобы минимизировать ручные операции.
В завершение, не забывайте делать резервные копии перед массовыми изменениями и оптимизировать базу данных после удаления.