Пустые таксономии — это категории, метки или пользовательские таксономии, которые не содержат ни одного связанного с ними поста. Со временем их накопление может замедлять работу сайта, усложнять навигацию и влиять на SEO. В этой статье разберём, как найти и удалить пустые таксономии в WordPress с помощью кода, а также рассмотрим полезные плагины, которые помогут автоматизировать процесс.
Что такое пустые таксономии и почему их стоит удалять
Таксономии в WordPress — это способ группировки контента. Основные встроенные таксономии — категории и метки, а также могут быть любые пользовательские таксономии, которые добавляют темы или плагины.
Пустые таксономии возникают, когда посты удаляются или изменяются их таксономические связи, но сами таксономии остаются. Они занимают место в базе данных, могут создавать пустые страницы архивов и мешают пользователям и поисковым системам.
Удаление пустых таксономий помогает:
- Уменьшить размер базы данных.
- Улучшить работу запросов к базе.
- Избавиться от лишних ссылок и страниц на сайте.
- Облегчить администрирование и навигацию по сайту.
Как найти пустые таксономии в WordPress
Для начала нужно определить, какие таксономии пусты. Это можно сделать вручную через админку, но если таксономий много — удобнее использовать код.
Пример функции wpmoney_find_empty_taxonomies(), которая выводит список пустых терминов для заданной таксономии:
function wpmoney_find_empty_taxonomies($taxonomy = 'category') {
$empty_terms = [];
$terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => false,
]);
if (is_wp_error($terms)) {
return $empty_terms;
}
foreach ($terms as $term) {
if ($term->count === 0) {
$empty_terms[] = $term;
}
}
return $empty_terms;
}Эту функцию можно вызвать для категорий, меток или пользовательских таксономий. Например:
$empty_categories = wpmoney_find_empty_taxonomies('category');
foreach ($empty_categories as $term) {
echo 'Пустая категория: ' . esc_html($term->name) . ' (ID: ' . $term->term_id . ')<br>';
}Проверка всех таксономий на сайте
Чтобы проверить сразу все зарегистрированные таксономии, используйте такой код:
$taxonomies = get_taxonomies(['public' => true], 'names');
foreach ($taxonomies as $taxonomy) {
$empty_terms = wpmoney_find_empty_taxonomies($taxonomy);
if (!empty($empty_terms)) {
echo '<h3>Пустые термины таксономии "' . esc_html($taxonomy) . '":</h3>';
foreach ($empty_terms as $term) {
echo esc_html($term->name) . ' (ID: ' . $term->term_id . ')<br>';
}
}
}Как удалить пустые таксономии программно
Для удаления терминов в WordPress используется функция wp_delete_term(). Мы можем создать функцию wpmoney_delete_empty_taxonomies(), которая удалит все пустые термины для выбранной таксономии:
function wpmoney_delete_empty_taxonomies($taxonomy = 'category') {
$empty_terms = wpmoney_find_empty_taxonomies($taxonomy);
foreach ($empty_terms as $term) {
$result = wp_delete_term($term->term_id, $taxonomy);
if (is_wp_error($result)) {
error_log('Ошибка удаления термина ID ' . $term->term_id . ': ' . $result->get_error_message());
}
}
}Для массового удаления пустых терминов по всем публичным таксономиям:
$taxonomies = get_taxonomies(['public' => true], 'names');
foreach ($taxonomies as $taxonomy) {
wpmoney_delete_empty_taxonomies($taxonomy);
}Рекомендуется запускать такой код однократно, например, через wp-cli или добавить временно в файл functions.php и затем удалить.
Решение с помощью плагинов
Если хочется не копаться в коде, можно использовать специализированные плагины для управления таксономиями и очистки базы данных.
Clearfy Pro — мощный плагин для оптимизации WordPress, который среди прочего позволяет очищать базу от мусорных данных, в том числе пустых таксономий. Подробнее на официальной странице плагина.
Еще один вариант — использовать плагин Term Management Tools, который позволяет объединять, удалять и управлять терминами. Через него можно быстро найти и удалить пустые термины.
Советы по предотвращению появления пустых таксономий
Чтобы минимизировать появление пустых таксономий, придерживайтесь следующих рекомендаций:
- Удаляйте категории и метки только после проверки, что они не используются.
- При удалении постов автоматически обновляйте связи таксономий.
- Используйте плагины типа WPCommunity для управления контентом и таксономиями в удобном интерфейсе.
- Регулярно проверяйте базу данных на наличие «мусорных» терминов и оптимизируйте её.
Выводы и рекомендации
Удаление пустых таксономий — важный этап поддержания сайта на WordPress в чистоте и порядке. Используйте наши функции, чтобы находить и удалять пустые термины, или автоматизируйте задачи с помощью плагинов. Это поможет ускорить сайт и улучшить взаимодействие пользователей с контентом.