Как сделать иерархию записей с поддержкой разных типов постов в WordPress

|

В WordPress стандартная иерархия реализована только для страниц (post type 'page'), которые поддерживают атрибут post_parent. Для других типов записей, особенно пользовательских (custom post types), иерархия по умолчанию либо отсутствует, либо работает ограниченно. В этой статье разберём, как создать полноценную иерархию для разных типов постов, включая кастомные, с примерами кода и рекомендациями по плагинам.

Почему стандартная иерархия ограничена только страницами

В WordPress у стандартного типа поста page есть встроенное свойство hierarchical, которое при значении true позволяет задавать родительские и дочерние страницы через поле post_parent. Для постов post и многих пользовательских типов постов по умолчанию это свойство равно false, из-за чего иерархия не реализуется.

Для пользовательских типов постов, при регистрации которых в функции register_post_type указать hierarchical => true, появляется возможность создавать иерархию, но при этом интерфейс в админке и функционал шаблонов нужно адаптировать.

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

Как зарегистрировать пользовательский тип поста с поддержкой иерархии

Пример регистрации пользовательского типа поста product с поддержкой иерархии:

function wphierarchy_register_hierarchical_cpt() {
    $args = array(
        'label' => 'Продукты',
        'public' => true,
        'hierarchical' => true, // Включаем иерархию
        'supports' => array('title', 'editor', 'page-attributes'), // page-attributes для сортировки и родителя
        'show_in_rest' => true,
    );
    register_post_type('product', $args);
}
add_action('init', 'wphierarchy_register_hierarchical_cpt');

Обратите внимание, что для работы иерархии в админке нужно добавить поддержку page-attributes. Это позволит выбирать родительский элемент и устанавливать порядок.

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

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

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

Пример функции вывода иерархии для типа product:

function wphierarchy_get_post_hierarchy($post_type = 'product', $parent = 0, $level = 0) {
    $args = array(
        'post_type' => $post_type,
        'post_parent' => $parent,
        'posts_per_page' => -1,
        'orderby' => 'menu_order',
        'order' => 'ASC',
        'post_status' => 'publish',
    );
    $posts = get_posts($args);

    if ($posts) {
        echo '<ul>';
        foreach ($posts as $post) {
            echo '<li>' . esc_html($post->post_title);
            wphierarchy_get_post_hierarchy($post_type, $post->ID, $level + 1);
            echo '</li>';
        }
        echo '</ul>';
    }
}

Вызов wphierarchy_get_post_hierarchy('product'); выведет всю иерархию продуктов древовидным списком.

Реализация иерархии для неиерархических типов постов через таксономии

Если тип поста не поддерживает иерархию, например, post, можно использовать иерархическую таксономию — например, категорию или кастомную таксономию с включённым параметром hierarchical => true.

Пример регистрации иерархической таксономии для типа поста news:

function wphierarchy_register_hierarchical_taxonomy() {
    $args = array(
        'hierarchical' => true,
        'label' => 'Категории новостей',
        'show_ui' => true,
        'show_admin_column' => true,
        'query_var' => true,
        'rewrite' => array('slug' => 'news-category'),
    );
    register_taxonomy('news_category', 'news', $args);
}
add_action('init', 'wphierarchy_register_hierarchical_taxonomy');

Таксономия с иерархией позволяет создавать древовидные категории и использовать их для фильтрации и вывода записей по категориям.

Использование плагина Clearfy Pro для расширенного управления иерархией

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

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

Практические советы по работе с иерархией записей

Пример применения в шаблоне

Чтобы вывести иерархию продуктов в шаблоне темы, просто вызовите функцию:

<?php wphierarchy_get_post_hierarchy('product'); ?>

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

WooCommerce: как исправить ошибку не работающего фильтра по иерархии категорий
17.04.2026
Как удалить пустое разделение в иерархии WordPress: практическое руководство
11.04.2026
Как создать иерархию пользовательских ролей в WordPress для управления доступом
25.12.2025
Как создать иерархию категорий с переходами в WordPress
29.12.2025
Динамическая иерархия пользователей WordPress с поддержкой REST API
22.03.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее