В 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 и навигацию на вашем сайте.