В процессе работы с WordPress, особенно при использовании большого количества таксономий и категорий, часто накапливаются пустые термины — категории, метки или другие таксономии, к которым не привязаны записи. Такие пустые термины не только захламляют админ-панель, но и могут влиять на SEO и скорость работы сайта. В этой статье разберем, как эффективно найти и удалить пустые термины в WordPress, используя собственный код и популярные плагины.
Что такое пустые термины и почему их нужно удалять
Пустые термины — это элементы таксономий без связанных с ними записей. Например, категория, которой не принадлежит ни один пост. Они появляются при удалении записей, массовом импорте, ошибках в работе плагинов или при миграции данных.
Причины удаления пустых терминов:
- Упрощение структуры сайта и админки
- Улучшение пользовательского опыта
- Оптимизация запросов к базе данных
- Положительное влияние на SEO-задачи
Рассмотрим как найти и удалить такие термины программно и через плагины.
Как удалить пустые термины программно
Для удаления пустых терминов мы можем использовать WP-функцию get_terms() с параметром hide_empty. Если указать hide_empty => true, мы получим только термины с записями, а если false — все термины, включая пустые. На основе этого можно определить пустые и удалить их.
Пример функции удаления пустых терминов
function wordpresses_delete_empty_terms($taxonomy = 'category') {
// Получаем все термины таксономии
$all_terms = get_terms(array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
));
foreach ($all_terms as $term) {
if ($term->count == 0) {
wp_delete_term($term->term_id, $taxonomy);
}
}
}
// Использование: удаляем пустые категории
wordpresses_delete_empty_terms('category');
// Для меток
// wordpresses_delete_empty_terms('post_tag');
Данная функция перебирает все термины указанной таксономии и удаляет те, у которых количество связанных записей равно нулю.
Как вызвать функцию из админки
Для удобства можно добавить кнопку в админ-панели или создать WP-CLI команду. Пример добавления в админ-меню:
add_action('admin_menu', function() {
add_submenu_page(
'tools.php',
'Удалить пустые термины',
'Удалить пустые термины',
'manage_options',
'wordpresses-delete-empty-terms',
'wordpresses_render_delete_terms_page'
);
});
function wordpresses_render_delete_terms_page() {
if (isset($_POST['delete_empty_terms'])) {
wordpresses_delete_empty_terms('category'); // Можно расширить
echo '<div class="notice notice-success is-dismissible">Пустые термины удалены.</div>';
}
echo '<form method="post"><input type="submit" name="delete_empty_terms" value="Удалить пустые категории" class="button button-primary"/></form>';
}
Это позволит запускать удаление из админки без необходимости писать код каждый раз.
Плагины для удаления пустых терминов
Если не хотите писать код, можно использовать плагины. Среди них:
- Term Management Tools — добавляет инструменты для массового удаления и слияния терминов, включая пустые.
- WP Sweep — плагин для очистки базы данных, умеет удалять пустые термины, ревизии, спам и т.п.
Для примера рассмотрим настройку и использование WP Sweep:
- Установите плагин WP Sweep или скачайте с официального репозитория.
- После активации перейдите в
Инструменты > Sweep. - Найдите раздел Taxonomies и нажмите кнопку "Sweep" рядом с пунктом "Empty Terms".
- Плагин удалит все пустые термины из всех таксономий.
Учтите, что работа с базой всегда требует резервного копирования перед удалением.
Как избежать появления пустых терминов
Профилактика — лучший способ. Вот несколько рекомендаций:
- При создании записей обязательно назначайте категории и метки.
- При массовом удалении записей одновременно очищайте связанные термины.
- Используйте фильтры и хуки для автоматического удаления пустых терминов, например, по крону.
Пример автоматического удаления пустых терминов раз в сутки с использованием wp_schedule_event:
add_action('wordpresses_daily_empty_term_cleanup', 'wordpresses_delete_empty_terms');
if (! wp_next_scheduled('wordpresses_daily_empty_term_cleanup')) {
wp_schedule_event(time(), 'daily', 'wordpresses_daily_empty_term_cleanup');
}
Так вы будете поддерживать чистоту таксономий без лишних усилий.
Заключение по теме удаления пустых терминов
Удаление пустых терминов — важная часть технического обслуживания WordPress-сайта, позволяющая поддерживать структуру и производительность. Программные решения дают гибкость и возможность интеграции в админку, а плагины — удобство для пользователей без навыков программирования.
Если хотите расширить функционал, рекомендуем рассмотреть Clearfy Pro — плагин для оптимизации и очистки WordPress, в том числе работы с таксономиями.