wpclean.ru wordpress WPClean.ru

Как удалить пустые категории и теги в WordPress: оптимизация структуры сайта

Почему важно удалять пустые категории и теги в WordPress

Пустые категории и теги — это те таксономии, к которым не привязаны записи. Они не несут пользы для пользователя и поисковых систем, а только загромождают админ-панель и могут ухудшать SEO. Особенно это актуально для сайтов с большим количеством контента и часто меняющейся структурой. Удаление пустых категорий и тегов помогает сделать структуру сайта чище, повысить удобство навигации и улучшить индексацию сайта поисковиками.

Кроме того, пустые таксономии могут негативно влиять на производительность сайта, так как WordPress обрабатывает их при формировании запросов и построении меню. Регулярная чистка таксономий — важный этап технического обслуживания сайта.

В этой статье рассмотрим, как быстро находить и удалять пустые категории и теги в WordPress как с помощью плагинов, так и с помощью кода.

Как найти пустые категории и теги с помощью плагинов

Плагин «Term Management Tools» для массового удаления

«Term Management Tools» — бесплатный плагин, который расширяет возможности управления таксономиями в WordPress. Он позволяет массово удалять пустые категории и теги, а также объединять термины.

Для использования:

  • Установите и активируйте плагин через админ-панель WordPress.
  • Перейдите в раздел «Записи» –> «Категории» или «Метки».
  • Выберите фильтр «Пустые» (Empty), чтобы отобразить только таксономии без записей.
  • Отметьте нужные элементы и выберите действие «Удалить» в выпадающем списке массовых действий.
  • Нажмите «Применить» для удаления.

Этот способ удобен для администраторов, не владеющих программированием, и позволяет быстро поддерживать порядок.

Плагин «WP-Optimize» и его возможности

В дополнение к оптимизации базы данных плагин WP-Optimize имеет инструмент очистки таксономий. Он помогает удалять неиспользуемые категории и теги, в том числе пустые. В разделе очистки базы данных можно активировать соответствующие опции и выполнить очистку одним кликом.

Однако, если нужен более точечный контроль, лучше использовать специализированные инструменты или код.

Удаление пустых категорий и тегов через код (PHP)

Если хочется автоматизировать процесс, можно написать функцию, которая ищет пустые категории и теги и удаляет их программно. Ниже пример такой функции для сайта wpclean.ru с префиксом функций wpclean_ для удобства и избежания конфликтов.

Функция перебирает таксономии category и post_tag, получает термины с нулевым количеством записей и удаляет их.

function wpclean_delete_empty_terms() {
    $taxonomies = array('category', 'post_tag');
    foreach ($taxonomies as $taxonomy) {
        $empty_terms = get_terms(array(
            'taxonomy' => $taxonomy,
            'hide_empty' => true, // Только пустые
            'fields' => 'ids',
        ));
        if (!empty($empty_terms) && !is_wp_error($empty_terms)) {
            foreach ($empty_terms as $term_id) {
                wp_delete_term($term_id, $taxonomy);
            }
        }
    }
}

// Рекомендуется запускать функцию вручную или через крон
// Например, добавьте вызов в админ-панели или в файл functions.php
// wpclean_delete_empty_terms();

Обратите внимание, что параметр 'hide_empty' => true в get_terms фильтрует только термины с записями, поэтому для поиска пустых терминов нужно использовать 'hide_empty' => false и дополнительно фильтровать по счётчику $term->count == 0. Исправленная версия ниже:

function wpclean_delete_empty_terms() {
    $taxonomies = array('category', 'post_tag');
    foreach ($taxonomies as $taxonomy) {
        $terms = get_terms(array(
            'taxonomy' => $taxonomy,
            'hide_empty' => false,
            'fields' => 'all',
        ));
        if (!empty($terms) && !is_wp_error($terms)) {
            foreach ($terms as $term) {
                if ($term->count == 0) {
                    wp_delete_term($term->term_id, $taxonomy);
                }
            }
        }
    }
}
<

Для запуска функции вручную достаточно один раз вызвать wpclean_delete_empty_terms(); в админской части или через отдельный скрипт. Для регулярной очистки можно добавить задачу в WP-Cron.

Автоматизация удаления пустых категорий и тегов через WP-Cron

Чтобы поддерживать сайт в чистоте постоянно, можно настроить автоматический запуск очистки. Для этого создадим событие WP-Cron и привяжем к нему нашу функцию.

function wpclean_schedule_cleanup() {
    if (!wp_next_scheduled('wpclean_cron_cleanup_terms')) {
        wp_schedule_event(time(), 'daily', 'wpclean_cron_cleanup_terms');
    }
}
add_action('wp', 'wpclean_schedule_cleanup');

function wpclean_cron_cleanup_terms_callback() {
    wpclean_delete_empty_terms();
}
add_action('wpclean_cron_cleanup_terms', 'wpclean_cron_cleanup_terms_callback');

Этот код добавляет ежедневное задание, которое будет автоматически удалять пустые категории и теги. Таким образом, не придется заботиться об этом вручную.

Дополнительные советы по управлению таксономиями в WordPress

Переосмысление структуры категорий и тегов

Пустые категории и теги часто появляются из-за нечеткого планирования структуры сайта. Рекомендуется периодически пересматривать и оптимизировать таксономии. Лучше использовать меньше, но более релевантных категорий и тегов, чтобы избежать излишнего дублирования и пустых терминов.

Используйте иерархические категории для логической группировки, а теги — для описания особенностей контента. Правильная структура улучшает юзабилити и SEO.

Массовое объединение и удаление терминов

Плагины вроде «Term Management Tools» позволяют не только удалять пустые термины, но и объединять похожие теги, например, если есть «WordPress» и «wordpress». Это помогает избежать дробления SEO-силы и упрощает управление.

Ручное объединение можно делать через функцию wpclean_merge_terms($old_term_id, $new_term_id, $taxonomy), пример которой можно реализовать по аналогии с удалением.

Очистка неиспользуемых терминов в пользовательских таксономиях

Если на сайте используются свои таксономии, например, для продуктов, проектов или портфолио, аналогично можно искать и удалять пустые термины. В функции wpclean_delete_empty_terms достаточно добавить названия этих таксономий в массив $taxonomies. Такой подход универсален и расширяем.

×
Прокачай свой WordPress!

Скидка -20% на премиум темы и плагины

Воспользоваться сейчас ⋙