Навигация сбоку в WordPress с родительским заголовком и дочерними подстраницами

Вопрос или проблема

У меня следующая навигационная структура в WordPress:

  Страница
     Подстраница
        Дочерняя страница
        Дочерняя страница
        Дочерняя страница
  Страница
     Подстраница
        Дочерняя страница
        Дочерняя страница
        Дочерняя страница
  Страница
     Подстраница
        Дочерняя страница
        Дочерняя страница
        Дочерняя страница

На каждой Подстранице и Дочерней странице я хочу отображать следующее в боковой панели:

  Подстраница
        Дочерняя страница
        Дочерняя страница
        Дочерняя страница

Ближе всего к этому я пришел с помощью следующего кода из здесь:

<ul>
<?php
global $post;
$current_page_parent = ( $post->post_parent ? $post->post_parent : $post->ID );      
wp_list_pages( array(
       'title_li' => '',
       'child_of' => $current_page_parent,
       'depth' => '1' )
);
?>
</ul>

Однако на Подстраницах он показывает только список всех Подстраниц (без Дочерних страниц), а на Дочерних страницах отображает список Дочерних страниц этого раздела, но название родительской Подстраницы отсутствует.

Как мне изменить код, чтобы добиться желаемого результата?

Спасибо!

Измените параметр depth на то количество уровней, через которые вы хотите, чтобы обходчик проходил.

Из описания параметра depth в документации.

Количество уровней в иерархии страниц, которые следует включить в сгенерированный список. Принимает -1 (любая глубина), 0 (все страницы), 1 (только верхние страницы) и n (страницы до заданной глубины n). Значение по умолчанию 0.

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

<?php
    global $post;
    $current_page_parent = ( $post->post_parent ? $post->post_parent : $post->ID );      
    wp_list_pages( array(
           'title_li' => '',
           'child_of' => $current_page_parent,
           'depth' => '2' // Обходит Подстраницу и ее детей первого уровня
         )
    );

Ответ или решение

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

Задача

У вас есть следующая структура навигации на WordPress:

Страница
    Подстраница
        Дочерняя страница
        Дочерняя страница
        Дочерняя страница
Страница
    Подстраница
        Дочерняя страница
        Дочерняя страница
        Дочерняя страница
Страница
    Подстраница
        Дочерняя страница
        Дочерняя страница
        Дочерняя страница

Вам нужно добиться отображения в боковой панели для каждой Подстраницы и Дочерней страницы:

Подстраница
    Дочерняя страница
    Дочерняя страница
    Дочерняя страница

Решение

Вы уже использовали следующий код, который находит дочерние страницы текущей страницы. Однако он не отображает название Подстраницы на Дочерних страницах:

<ul>
<?php
global $post;
$current_page_parent = ($post->post_parent ? $post->post_parent : $post->ID);
wp_list_pages(array(
    'title_li' => '',
    'child_of' => $current_page_parent,
    'depth' => '1'
));
?>
</ul>

Чтобы исправить это и отобразить как Подстраницу, так и её дочерние страницы, вам необходимо изменить параметр depth на 2. Это позволит вам вывести и Подстраницы, и их первую линию дочерних страниц. Вот обновлённое решение:

<ul>
<?php
global $post;
$current_page_parent = ($post->post_parent ? $post->post_parent : $post->ID);
wp_list_pages(array(
    'title_li' => '',
    'child_of' => $current_page_parent,
    'depth' => 2 // Устанавливаем глубину на 2 для отображения подстраниц и их дочерних страниц
));
?>
</ul>

Как работает код

  1. global $post: Эта строка позволяет получить доступ к глобальной переменной $post, которая содержит информацию о текущей странице.
  2. $current_page_parent: Эта переменная проверяет, есть ли у текущей страницы родительская страница. Если родительская страница существует, её ID будет использован; в противном случае будет использован ID текущей страницы.
  3. wp_list_pages(): Эта функция генерирует список страниц. Мы устанавливаем следующие параметры:
    • title_li: Параметр для настройки заголовка списка, который мы оставляем пустым.
    • child_of: Это устанавливает родительскую страницу для отображения её дочерних элементов.
    • depth: Мы указываем 2, чтобы вывести как Подстраницы, так и их Дочерние страницы, что как раз и нужно для вашей задачи.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...