Вывод списка дочерних страниц в WordPress

Возникла необходимость решить интересную задачу, но готового решения не нашёл.

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

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

Для исключения определённых страниц из меню я использовал плагин Exclude Pages.

Изначально меню выглядело вот так:
Вывод списка дочерних страниц в WordPress

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

Для решения этой задачи я написал небольшой код, создающий новый шорткод [pages], который необходимо подключить в файл functions.php вашей темы.

Скачать его можно по этой ссылке: https://bitbucket.org/gruz0/wordpress/src/.
Находите файл shortcode-pages.php, копируете всё и добавляйте в functions.php.

Примеры использования шорткода

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


Пример 1: Выводим указанные страницы по ID.

В параметр include передаются ID тех страниц, которые нам нужно отобразить.

[pages include="1272,1274,1276,1280"]

Если параметр не указан, то выводятся все страницы, являющиеся дочерними к активной.

Результат:
Вывод списка дочерних страниц в WordPress


Пример 2: Тоже самое, но с присвоенным стилем CSS для контейнера

Параметр css_class задаёт стиль CSS, который будет подключен к тегу UL для вывода маркированного списка. По-умолчанию используется класс subpages, можете задавать стили списку и через него, в том числе.

[pages include="1274,1276,1268,1278,1280,1266" css_class="red"]

Результат:
Вывод списка дочерних страниц в WordPress

Классу red я заранее задал такой стиль, в вашем случае всё будет иначе :-)


Пример 3: Вывод дочерних записей другой страницы.

Параметр parent позволяет выводить на одной странице список другой страницы с дочерними пунктами. В нём нужно указать ID нужной нам страницы.

[pages parent=2]

Результат:
Вывод списка дочерних страниц в WordPress


Пример 4: Вывод родительской страницы

Параметр show_parent со значением «1» позволяет выводить первой в этом меню родительскую страницу, указанную в parent. Это может быть удобным в некоторых случаях.

Результат:
Вывод списка дочерних страниц в WordPress

В данном случае на странице «Стоимость» происходит добавление первым пунктом родительской страницы «Гаражные ворота». Плюс в том, что эту конструкцию можно использовать не только на страницах, но и в записях.

Заключение

На этом всё, задачка решена и можно смело использовать код в других проектах :-)

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Комментарии

  • здравствуйте. подскажите пжл
    как на материнской странице вывести дочерние страницы 2 уровня, по данной материнской страницы
    Тоесть есть, такая структура: Производитель -> Категория товара -> Товар
    Нужно: на странице Производитель вывести Товары
    Спс заранее.

  • Добрый вечер. Подскажите пожалуйста как вывести список дочерних и родительской в самих дочерних?

  • Добрый вечер! Отличное решение, а есть ли возможность вывода списка страниц одного уровня.
    Допустим,
    Страница 1ур -> Страница 2ур -> Страница 3ур, Страница 3ур, Страница 3ур.

    И чтоб на странице 3-го уровня выводились соседние 2 страницы.

    • Добрый вечер, Антон :-)
      Достаточно будет код поправить в файле из этой инструкции.
      Сейчас пока нет возможности этим заняться, но если сами не догадаетесь как — напишите мне к выходным на support@gruz0.ru, либо в комментариях к этой записи, вместе разберёмся.

      • Как вариант, выводить [pages parent=13], где 13-id своего же родителя, но не проверял =)

      • Доброе утро!
        Еще вопросик — какая структура у $state, как там хранятся parent=2, include=»1274,1276,1268,1278,1280,1266″ и т.д.?

        Т.е. грубо говоря — как вызвать эту функцию не используя шорткод?

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: