Таксономии в WordPress — это отличный инструмент для организации контента. Однако со временем на сайте могут накапливаться пустующие таксономии, которые не используются ни в одной записи. Они не только создают беспорядок в базе данных, но и могут негативно влиять на производительность сайта и SEO. В этой статье расскажем, как найти и удалить такие пустые таксономии с помощью кода и плагинов, а также рассмотрим практические рекомендации для поддержки чистоты таксономий.
Что такое пустующие таксономии и почему их важно удалить
Пустующие таксономии — это термины (например, категории, метки или кастомные таксономии), которые не связаны ни с одним постом или другим типом записи. Они появляются из-за тестов, удаления контента или ошибок при импорте данных.
Главные проблемы пустующих таксономий:
- Ненужная нагрузка на базу данных. WordPress хранит данные о таксономиях в таблицах, и большое их количество замедляет выборки.
- Запутанность интерфейса. В админке и в пользовательских фильтрах отображаются неиспользуемые термины.
- SEO-риски. Пустые архивные страницы таксономий могут индексироваться, создавая дублирующий и низкокачественный контент.
Поэтому регулярная очистка таксономий — важная задача для оптимизации и поддержки WordPress-сайта.
Как найти пустующие таксономии в WordPress
Для начала нужно определить, какие таксономии пустуют. Сделать это можно как через SQL-запросы, так и программно на PHP.
Поиск пустых терминов через SQL
В базе данных WordPress есть таблицы wp_terms, wp_term_taxonomy и wp_term_relationships. В терминологии WordPress термин считается пустым, если count в таблице wp_term_taxonomy равен 0.
Пример запроса для поиска пустых терминов конкретной таксономии, например, category:
SELECT t.term_id, t.name FROM wp_terms AS t
JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'category' AND tt.count = 0;
Этот запрос выведет список пустых категорий.
Поиск пустых терминов через PHP-функцию
Можно создать функцию для wpclass_delete_empty_taxonomies_get_empty_terms(), которая будет возвращать пустые термины по конкретной таксономии:
function wpclass_delete_empty_taxonomies_get_empty_terms($taxonomy) {
$terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => true
]);
$all_terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => false
]);
$empty_terms = [];
foreach ($all_terms as $term) {
$found = false;
foreach ($terms as $active_term) {
if ($term->term_id === $active_term->term_id) {
$found = true;
break;
}
}
if (!$found) {
$empty_terms[] = $term;
}
}
return $empty_terms;
}
Эта функция возвращает массив пустых терминов для указанной таксономии.
Как удалить пустые таксономии программно
Удаление пустых терминов можно автоматизировать с помощью пользовательской функции. Ниже пример функции wpclass_delete_empty_taxonomies_remove_terms(), которая удаляет все пустые термины указанной таксономии:
function wpclass_delete_empty_taxonomies_remove_terms($taxonomy) {
$empty_terms = wpclass_delete_empty_taxonomies_get_empty_terms($taxonomy);
foreach ($empty_terms as $term) {
wp_delete_term($term->term_id, $taxonomy);
}
}
// Пример вызова для удаления пустых категорий
wpclass_delete_empty_taxonomies_remove_terms('category');
Рекомендуется делать резервную копию базы перед массовым удалением.
Автоматизация очистки пустых таксономий с помощью WPClass Cron
Чтобы не заниматься очисткой вручную, можно автоматизировать процесс с помощью планировщика задач WPClass Cron. Например, добавить задачу, которая будет запускать удаление пустых терминов еженедельно.
Пример кода, который добавляет такую задачу:
function wpclass_delete_empty_taxonomies_schedule() {
if (!wp_next_scheduled('wpclass_delete_empty_taxonomies_cron_hook')) {
wp_schedule_event(time(), 'weekly', 'wpclass_delete_empty_taxonomies_cron_hook');
}
}
add_action('wp', 'wpclass_delete_empty_taxonomies_schedule');
add_action('wpclass_delete_empty_taxonomies_cron_hook', function() {
$taxonomies = get_taxonomies(['public' => true], 'names');
foreach ($taxonomies as $taxonomy) {
wpclass_delete_empty_taxonomies_remove_terms($taxonomy);
}
});
Так вы будете поддерживать чистоту таксономий без лишних усилий.
Плагины для управления таксономиями и очистки сайта
Если вы предпочитаете готовые решения, можно использовать плагины, которые помогут выявить и удалить пустые таксономии:
- Clearfy Pro — мощный плагин для оптимизации WordPress, включает инструменты для очистки базы данных и управления таксономиями.
- WPCommunity — если у вас форум или сообщество на сайте, плагин поможет грамотно работать с пользовательскими таксономиями.
Эти инструменты позволяют проводить очистку через интерфейс и настраивать регулярное обслуживание.
Как не допустить появления пустых таксономий: рекомендации
Чтобы минимизировать накопление пустых терминов, следуйте простым советам:
- Удаляйте категории и метки сразу после удаления связанного контента.
- Проверяйте импорты и миграции контента на предмет корректного сопоставления таксономий.
- Используйте автоматизированные задачи для регулярной очистки, например, с помощью WPClass Cron.
- Ограничьте создание таксономий пользователями, если это не требуется.
Такой подход поможет поддерживать порядок и улучшать производительность сайта.
Выводы
Удаление пустующих таксономий — важный этап оптимизации WordPress-сайта. Используйте SQL-запросы и PHP-функции для поиска и удаления пустых терминов, автоматизируйте процесс с помощью WPClass Cron и используйте подходящие плагины, например Clearfy Pro, для удобства. Регулярное обслуживание таксономий улучшит скорость работы сайта и поможет избежать SEO-проблем.