wp-code.ru wordpress WP-Codе

Как добавить автоматическое удаление неиспользуемых чистых категорий в WordPress

В WordPress со временем накапливаются категории, которые не содержат ни одного поста. Это не только создает беспорядок в админке, но и может негативно влиять на производительность и SEO. В этой статье разберем, как автоматически находить и удалять такие пустые категории, используя собственный код и плагины. Приведем практические примеры и советы для безопасной реализации.

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

Пустые категории — это категории, в которых нет ни одного опубликованного поста. Их существование может привести к нескольким проблемам:

  • Запутанность структуры сайта. Администраторы и редакторы видят ненужные категории, что усложняет управление контентом.
  • Потеря SEO-потенциала. Пустые категории генерируют страницы без содержимого, что плохо воспринимается поисковыми системами.
  • Негативное влияние на производительность. Хотя влияние минимально, лишние термины таксономий увеличивают нагрузку на базу данных.

Регулярное удаление пустых категорий помогает поддерживать чистоту и оптимальность WordPress-сайта.

Как найти пустые категории вручную

В админке WordPress можно быстро увидеть категории без постов. Для этого перейдите в меню Записи → Рубрики. Там у каждой категории отображается количество записей. Категории с нулевым числом — пустые.

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

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

Для автоматизации процесса можно создать функцию, которая найдет категории с нулевым количеством постов и удалит их. Ниже пример такой функции для wp-code.ru, которую можно добавить в файл functions.php вашей темы или в собственный плагин.

function wpcode_remove_empty_categories() {
    $args = array(
        'taxonomy' => 'category',
        'hide_empty' => true, // покажет только категории с постами
        'fields' => 'ids',
    );

    // Получаем все категории
    $all_cats = get_terms(array('taxonomy' => 'category', 'hide_empty' => false, 'fields' => 'ids'));

    // Получаем категории с постами
    $non_empty_cats = get_terms($args);

    // Определяем пустые категории
    $empty_cats = array_diff($all_cats, $non_empty_cats);

    foreach ($empty_cats as $cat_id) {
        wp_delete_term($cat_id, 'category');
    }
}

// Запускаем функцию при активации плагина или вручную
// add_action('init', 'wpcode_remove_empty_categories');

Объяснение кода:

  • Сначала получаем все категории, включая пустые.
  • Затем получаем только категории с постами.
  • Вычитаем непустые из всех — получаем пустые.
  • Удаляем каждую пустую категорию с помощью wp_delete_term.

Можно запускать эту функцию вручную или привязать к Cron для регулярного автоматического удаления.

Добавление Cron задачи для регулярного удаления

Чтобы запускать очистку автоматически, добавьте Cron задачу:

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

add_action('wpcode_daily_cleanup_hook', 'wpcode_remove_empty_categories');

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

Использование плагинов для удаления пустых категорий

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

  • Term Management Tools — расширяет стандартный функционал управления терминами, включая массовое удаление.
  • WP Bulk Delete — позволяет удалять посты, комментарии, термины по разным условиям, в том числе пустые категории.

Например, WP Bulk Delete позволяет настроить фильтр по таксономиям и удалить пустые категории удобным интерфейсом.

Особенности и предосторожности при удалении категорий

Перед автоматическим удалением нужно учесть несколько важных моментов:

  • Резервное копирование. Обязательно делайте бэкап базы данных перед массовыми удалениями.
  • Проверка условий. Возможно, некоторые категории временно пусты, но нужны в структуре.
  • Переназначение постов. Если категория не пустая, но посты будут удалены или перемещены, убедитесь, что они не останутся без категории.
  • Кеширование. Очистите кеш после удаления категорий, чтобы изменения отобразились на сайте.

Расширение функции: удаление неиспользуемых тегов и таксономий

Аналогично категории, можно расширить функционал для удаления пустых тегов или пользовательских таксономий. Пример для тегов:

function wpcode_remove_empty_tags() {
    $all_tags = get_terms(array('taxonomy' => 'post_tag', 'hide_empty' => false, 'fields' => 'ids'));
    $non_empty_tags = get_terms(array('taxonomy' => 'post_tag', 'hide_empty' => true, 'fields' => 'ids'));
    $empty_tags = array_diff($all_tags, $non_empty_tags);
    foreach ($empty_tags as $tag_id) {
        wp_delete_term($tag_id, 'post_tag');
    }
}

Так можно держать таксономии в порядке без лишних терминов.

Выводы

Автоматическое удаление пустых категорий в WordPress — важный шаг к поддержанию чистоты и оптимизации сайта. Используйте приведенный код и/или плагины, чтобы реализовать регулярную очистку. Не забывайте про бэкапы и тестирование на staging-среде. Такая практика поможет избежать накопления мусора и повысит удобство управления контентом.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее