Возникла необходимость решить интересную задачу, но готового решения не нашёл.
Дано: страницы в WordPress с несколькими уровнями вложенности.
Нужно: при заходе на главную страницу «Заборы» вывести список определённых дочерних страниц с первым уровнем вложенности, включая скрытые страницы.
Для исключения определённых страниц из меню я использовал плагин Exclude Pages.
Изначально меню выглядело вот так:
Вот эти четыре нижних пункта в меню нам понадобятся для вывода их на странице «Заборы», которая является родительской. Их мы и скрываем плагином.
Для решения этой задачи я написал небольшой код, создающий новый шорткод [pages], который необходимо подключить в файл functions.php вашей темы.
Скачать его можно по этой ссылке: https://bitbucket.org/gruz0/wordpress/src/.
Находите файл shortcode-pages.php, копируете всё и добавляйте в functions.php.
Примеры использования шорткода
Выбирайте любой из предложенных ниже примеров, вставляйте в текст вашей страницы и тестируйте. Имейте в виду, что все перечисленные параметры можно использовать как по отдельности, так и вместе.
Пример 1: Выводим указанные страницы по ID.
В параметр include передаются ID тех страниц, которые нам нужно отобразить.
[pages include="1272,1274,1276,1280"]
Если параметр не указан, то выводятся все страницы, являющиеся дочерними к активной.
Пример 2: Тоже самое, но с присвоенным стилем CSS для контейнера
Параметр css_class задаёт стиль CSS, который будет подключен к тегу UL для вывода маркированного списка. По-умолчанию используется класс subpages, можете задавать стили списку и через него, в том числе.
[pages include="1274,1276,1268,1278,1280,1266" css_class="red"]
Классу red я заранее задал такой стиль, в вашем случае всё будет иначе :-)
Пример 3: Вывод дочерних записей другой страницы.
Параметр parent позволяет выводить на одной странице список другой страницы с дочерними пунктами. В нём нужно указать ID нужной нам страницы.
[pages parent=2]
Пример 4: Вывод родительской страницы
Параметр show_parent со значением «1» позволяет выводить первой в этом меню родительскую страницу, указанную в parent. Это может быть удобным в некоторых случаях.
В данном случае на странице «Стоимость» происходит добавление первым пунктом родительской страницы «Гаражные ворота». Плюс в том, что эту конструкцию можно использовать не только на страницах, но и в записях.
Заключение
На этом всё, задачка решена и можно смело использовать код в других проектах :-)
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
здравствуйте. подскажите пжл
как на материнской странице вывести дочерние страницы 2 уровня, по данной материнской страницы
Тоесть есть, такая структура: Производитель -> Категория товара -> Товар
Нужно: на странице Производитель вывести Товары
Спс заранее.
Здравствуйте, Ренат. Не совсем понял, что именно вы хотите получить. Приведите пример.
Добрый вечер. Подскажите пожалуйста как вывести список дочерних и родительской в самих дочерних?
Спасибо!
В таком виде:
echo gruz0_show_pages(array(‘parent’ => 1, ‘include’ => array(), ‘css_class’ => », ‘show_parent’ => 1));
Доброе утро!
Еще вопросик — какая структура у $state, как там хранятся parent=2, include=»1274,1276,1268,1278,1280,1266″ и т.д.?
Т.е. грубо говоря — как вызвать эту функцию не используя шорткод?
Как вариант, выводить [pages parent=13], где 13-id своего же родителя, но не проверял =)
Добрый вечер, Антон :-)
Достаточно будет код поправить в файле из этой инструкции.
Сейчас пока нет возможности этим заняться, но если сами не догадаетесь как — напишите мне к выходным на support@gruz0.ru, либо в комментариях к этой записи, вместе разберёмся.
Добрый вечер! Отличное решение, а есть ли возможность вывода списка страниц одного уровня.
Допустим,
Страница 1ур -> Страница 2ур -> Страница 3ур, Страница 3ур, Страница 3ур.
И чтоб на странице 3-го уровня выводились соседние 2 страницы.