Как удалить пустые категории в WordPress

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

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

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

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

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

Плагин «Remove Empty Categories»

Один из самых простых способов — воспользоваться бесплатным плагином «Remove Empty Categories». Он автоматически находит категории без записей и позволяет быстро удалить их.

Преимущества:

  • Простота установки и использования
  • Автоматический поиск пустых категорий
  • Удаление в один клик

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

Использование плагина Clearfy Pro для очистки таксономий

Если вы используете Clearfy Pro, в нем есть удобные инструменты для оптимизации таксономий, включая удаление пустых категорий. Этот плагин помогает не только удалять пустые категории, но и улучшать производительность сайта в целом.

Подробнее о Clearfy Pro можно узнать на официальном сайте.

Поиск и удаление пустых категорий через код

Если вы хотите контролировать процесс более детально, можно использовать код. Ниже представлен пример функции с префиксом wpcourse_, которая находит и удаляет пустые категории из базы данных.

function wpcourse_delete_empty_categories() {
    $args = array(
        'taxonomy' => 'category',
        'hide_empty' => true,
        'fields' => 'ids'
    );
    $non_empty_cats = get_terms($args);

    $all_cats = get_terms(array('taxonomy' => 'category', 'hide_empty' => false, 'fields' => 'ids'));

    $empty_cats = array_diff($all_cats, $non_empty_cats);

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

    return count($empty_cats);
}

// Используйте так, например, при активации плагина или вручную
add_action('admin_init', function() {
    if (current_user_can('manage_options')) {
        $deleted = wpcourse_delete_empty_categories();
        if ($deleted) {
            add_action('admin_notices', function() use ($deleted) {
                echo '<div class="notice notice-success is-dismissible">Удалено пустых категорий: ' . intval($deleted) . '</div>';
            });
        }
    }
});

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

Как добавить кнопку для запуска очистки в админке

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

function wpcourse_add_admin_page() {
    add_submenu_page(
        'tools.php',
        'Удалить пустые категории',
        'Удалить пустые категории',
        'manage_options',
        'wpcourse-delete-empty-cats',
        'wpcourse_admin_page_callback'
    );
}
add_action('admin_menu', 'wpcourse_add_admin_page');

function wpcourse_admin_page_callback() {
    if (isset($_POST['wpcourse_delete_empty'])) {
        check_admin_referer('wpcourse_delete_empty_nonce');
        $deleted = wpcourse_delete_empty_categories();
        echo '<div class="notice notice-success is-dismissible">Удалено пустых категорий: ' . intval($deleted) . '</div>';
    }
    echo '<h2>Удалить пустые категории</h2>';
    echo '<form method="post">';
    wp_nonce_field('wpcourse_delete_empty_nonce');
    echo '<input type="submit" name="wpcourse_delete_empty" class="button button-primary" value="Удалить пустые категории">';
    echo '</form>';
}

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

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

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

  • Перед удалением постов проверяйте, не останутся ли связанные категории пустыми.
  • Используйте плагины и инструменты, которые автоматически поддерживают порядок, например, Clearfy Pro.
  • Регулярно совершайте аудит категорий и таксономий на сайте.
  • Автоматизируйте очистку с помощью Cron, запуская функцию удаления пустых категорий по расписанию.

Пример добавления Cron задачи для удаления пустых категорий еженедельно:

function wpcourse_schedule_weekly_delete_empty_categories() {
    if (!wp_next_scheduled('wpcourse_weekly_delete_empty')) {
        wp_schedule_event(time(), 'weekly', 'wpcourse_weekly_delete_empty');
    }
}
add_action('wp', 'wpcourse_schedule_weekly_delete_empty_categories');

add_action('wpcourse_weekly_delete_empty', 'wpcourse_delete_empty_categories');

Вывод

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

Если хотите подробнее узнать о плагинах для оптимизации WordPress, рекомендуем ознакомиться с Clearfy Pro — мощным инструментом для очистки и ускорения сайта.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как использовать AJAX в WordPress для форм и обновления контента
13.01.2026
Как настроить отложенный запуск функций в WordPress с помощью Cron
21.02.2026
Работа с хуками и фильтрами в WordPress — подробное руководство с примерами
25.11.2025
Как использовать WPRemark для управления комментариями в WordPress
13.04.2026
Как создать своё меню в WordPress с помощью кода: подробное руководство с примерами
05.01.2026
×
Делай сайт лучше!!

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

Использовать скидку ⋙