wphierarchy.ru wordpress Структура шаблонов WordPress

Создаем динамическую иерархию страниц в WordPress с помощью кода и плагинов

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

Что такое динамическая иерархия страниц и зачем она нужна

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

Основные преимущества динамической иерархии:

  • Автоматическое обновление при добавлении новых страниц;
  • Отсутствие необходимости вручную менять меню и ссылки;
  • Удобство навигации и структурирования контента;
  • Лучшее SEO за счет правильной внутренней перелинковки.

Рассмотрим несколько способов реализации такой иерархии — через код и плагины.

Создание динамического дерева страниц через кастомный код

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

function wphierarchy_get_page_tree($parent_id = 0) {
    $pages = get_pages(array('parent' => $parent_id, 'sort_column' => 'menu_order'));
    if (empty($pages)) {
        return '';
    }
    $output = '<ul>';
    foreach ($pages as $page) {
        $output .= '<li><a href="' . get_permalink($page->ID) . '">' . esc_html($page->post_title) . '</a>';
        $output .= wphierarchy_get_page_tree($page->ID);
        $output .= '</li>';
    }
    $output .= '</ul>';
    return $output;
}

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

function wphierarchy_page_tree_shortcode() {
    return wphierarchy_get_page_tree(0);
}
add_shortcode('wphierarchy_tree', 'wphierarchy_page_tree_shortcode');

Теперь в любом месте сайта можно вставить [wphierarchy_tree] и получить актуальное дерево страниц.

Как улучшить вывод иерархии

Для удобства можно добавить CSS-стили, которые сделают список более читабельным. Например:

.wphierarchy-tree ul {
    list-style-type: none;
    margin-left: 20px;
}
.wphierarchy-tree li {
    margin-bottom: 5px;
}

И обернуть вывод в div с этим классом:

function wphierarchy_page_tree_shortcode() {
    return '<div class="wphierarchy-tree">' . wphierarchy_get_page_tree(0) . '</div>';
}

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

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

  • List Subpages Shortcode — позволяет выводить список дочерних страниц через шорткод с параметрами, например, [subpages parent="123" depth="2"];
  • WP Sitemap Page — генерирует карту сайта, включая иерархические списки страниц и записей;
  • Hierarchical Pages — упрощает управление страницами, добавляя разделение по уровням в админке;
  • WP Page Tree — мощный инструмент с визуальным деревом в админке;
  • Clearfy Pro — среди множества функций есть улучшение работы с иерархией и меню.

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

Пример использования List Subpages Shortcode

Установите плагин, затем в нужном месте шаблона или записи добавьте:

[subpages parent="0" depth="3"]

Параметр parent указывает ID страницы, с которой начинается вывод, а depth — уровень вложенности.

Динамическая иерархия и SEO: что важно учитывать

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

  • Соблюдайте логичную структуру URL, например, /parent/child/grandchild/;
  • Добавьте хлебные крошки — с помощью кода или плагинов, таких как Expert Review;
  • Избегайте циклических ссылок и избыточных вложенностей — они усложняют навигацию и снижают скорость индексации;
  • Оптимизируйте скорость загрузки страниц с помощью кэширования и минимизации запросов к базе.

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

function wphierarchy_breadcrumbs() {
    global $post;
    $breadcrumbs = '<a href="' . home_url() . '">Главная</a>';
    if ($post->post_parent) {
        $parent_id  = $post->post_parent;
        $parents = array();
        while ($parent_id) {
            $page = get_post($parent_id);
            $parents[] = '<a href="' . get_permalink($page->ID) . '">' . get_the_title($page->ID) . '</a>';
            $parent_id = $page->post_parent;
        }
        $parents = array_reverse($parents);
        foreach ($parents as $parent_link) {
            $breadcrumbs .= ' » ' . $parent_link;
        }
    }
    $breadcrumbs .= ' » ' . get_the_title($post->ID);
    return '<nav class="breadcrumbs">' . $breadcrumbs . '</nav>';
}

Вставьте вызов echo wphierarchy_breadcrumbs(); в шаблон, чтобы вывести навигацию.

Заключение

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

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

×
-15%
на премиум-тему
Reboot

Создай сайт мечты
на WordPress!

Купить со скидкой »