Как удалить пустое разделение в иерархии WordPress

|

В процессе создания сложных иерархий страниц, категорий или пользовательских таксономий в WordPress нередко возникает проблема пустых разделов — узлов и веток иерархии, которые не содержат контента (постов, страниц или вложенных элементов). Такое пустое разделение ухудшает навигацию, может влиять на SEO и портит пользовательский опыт. В этой статье мы подробно разберём, как автоматически или вручную выявлять и удалять пустые разделы в иерархии WordPress с помощью кода и плагинов.

Почему появляются пустые разделения в иерархии WordPress

Пустые разделы — это часто категории, страницы или таксономии, у которых нет дочерних элементов или контента. Основные причины их появления:

Например, категория «Новости» может остаться пустой, если все записи из неё удалены, но сама категория не удалена. Это приводит к ситуации, когда меню или виджеты показывают бесполезный пункт.

Как найти пустые разделы в иерархии WordPress

Для начала полезно понять, какие разделы пустые. Для этого можно использовать SQL-запросы или PHP-код, которые проверят количество записей внутри таксономий или наличие дочерних элементов.

Пример PHP-функции для проверки пустоты категории

function wphierarchy_is_term_empty($term_id, $taxonomy = 'category') {
    $count = get_term($term_id, $taxonomy)->count;
    return ($count == 0);
}

Эта функция возвращает true, если у категории (или другой таксономии) нет записей.

Проверка пустоты страницы (наличие дочерних страниц)

function wphierarchy_is_page_empty($page_id) {
    $children = get_pages(array('child_of' => $page_id));
    return empty($children);
}

Если функция возвращает true, значит у страницы нет дочерних страниц, то есть она потенциально пустая, если сама не содержит контент.

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

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

function wphierarchy_delete_empty_categories() {
    $categories = get_categories(array('hide_empty' => false));
    foreach ($categories as $cat) {
        if ($cat->count == 0) {
            wp_delete_category($cat->term_id);
        }
    }
}

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

Рекурсивное удаление пустых категорий с учётом дочерних

function wphierarchy_recursive_delete_empty_categories($parent = 0) {
    $args = array(
        'hide_empty' => false,
        'parent' => $parent,
    );
    $categories = get_categories($args);
    foreach ($categories as $cat) {
        wphierarchy_recursive_delete_empty_categories($cat->term_id);
        $term = get_term($cat->term_id);
        if ($term->count == 0) {
            wp_delete_category($cat->term_id);
        }
    }
}
<

Вы можете вызвать wphierarchy_recursive_delete_empty_categories(); для очистки всей иерархии категорий.

Удаление пустых страниц и разделов в иерархии страниц WordPress

Страницы в WordPress могут иметь дочерние страницы, образуя иерархию. Для удаления пустых страниц (без контента и без дочерних страниц) используйте такой код:

function wphierarchy_delete_empty_pages() {
    $pages = get_pages();
    foreach ($pages as $page) {
        $has_children = get_pages(array('child_of' => $page->ID));
        $content_empty = empty(trim(strip_tags($page->post_content)));
        if (!$has_children && $content_empty) {
            wp_delete_post($page->ID, true);
        }
    }
}

Этот скрипт удалит страницы, которые не содержат контента и не имеют дочерних страниц, то есть полностью пустые разделы.

Плагины для упрощения управления иерархиями и очистки пустых разделов

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

Для интеграции с плагинами WPGPT или WPRemark на https://wpshop.ru/ можно настроить автоматизацию очистки иерархий по расписанию, используя REST API и хуки. Подробнее об этих инструментах — на странице WPGPT.

Практические советы по работе с иерархиями без пустых разделов

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

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

register_activation_hook(__FILE__, 'wphierarchy_recursive_delete_empty_categories');

Заключение

Удаление пустых разделений в иерархиях WordPress — важная задача для поддержания чистоты сайта и удобства навигации. С помощью приведённых функций и плагинов вы сможете эффективно находить и удалять пустые категории, страницы и таксономии, избегая путаницы и улучшая работу сайта. При необходимости автоматизируйте процесс с помощью хуков и REST API.

Как создать иерархию для пользовательских метаполей в WordPress
01.02.2026
Автоматическое создание иерархии контекста в WordPress с помощью хуков
26.03.2026
Как создать иерархию меню в WordPress с подменю и кастомными атрибутами
22.12.2025
Как создать иерархию отзывов с поддержкой рейтингов в WordPress
20.02.2026
Как создать иерархию для виджетов WordPress с динамической подгрузкой
28.01.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее