Новости

Как правильно применять в JavaScript асинхронные функции: примеры работы с ES 2017
От автора: возможность писать на JavaScript асинхронные функции является важным обновлением в ES2017. Что такое асинхронные функции? Асинхронные функции — это функции, которые возвращают promise. Мы

WordPress JavaScript — как правильно подключить файл скрипта к шаблону сайта
Использование в шаблонах WordPress JavaScript скриптов давно стало обычным делом. Их подключение возможно несколькими способами, начиная с классического варианта с использование голого HTML. Но чтобы все

Как исправить JavaScript error "ВКонтакте"? Что делать при ошибках JavaScript в "ВКонтакте"?
"ВКонтакте" - это на сегодняшний день самый удобный русскоязычный ресурс, который является не только популярнейшей социальной сетью, но и сервисом для прослушивания аудиозаписей и просмотра видео. Здесь

Правильное использование Tor Browser
Tor Browser полностью анонимен – Миф или реальность? Многие считают, что Tor — это полностью анонимное и безопасное средство для интернет-серфинга, которое не дает никому возможность контролировать то,

Javascript error object is not a function вконтакте как исправить
"ВКонтакте" - это на сегодняшний день самый удобный русскоязычный ресурс, который является не только популярнейшей социальной сетью, но и сервисом для прослушивания аудиозаписей и просмотра видео. Здесь

Как исправить ошибку javascript error вконтакте
На сегодняшний день «Вконтакте» является наиболее удобным русскоязычным ресурсом, который представляет собой не только крупнейшую социальной сеть, но и сервис для просмотра видео и прослушивания аудиозаписей.

Что такое JavaScript и для чего он используется?
Подробности декабря 10, 2015 Просмотров: 20225 В интернете миллионы веб-страниц,

Практика javascript синтаксис написания
Javascript — это язык программирования, который активно используется для построения динамических веб страниц. Собственно с этой целью он и был изобретен. У нашего с вами языка еще есть такое интересное

JavaScript учебник
Код функций в JavaScript начинает выполнение после их вызова. Функции являются одним из наиболее важных строительных блоков кода в JavaScript. Функции состоят из набора команд и обычно выполняют

Рекомендации решившим начать изучать JavaScript
Если вы решили начать изучать JavaScript , то эта статья для вас. Надеюсь, что её прочтение избавит вас в будущем от множества ошибок и сделает его изучения более простым, быстрым и эффективным. В статье

Вывод списка подстраниц для текущей страницы

Опубликовано: 01.09.2018

Одно из самых знаковых отличий постов в wordpress от страниц — возможность иметь определенную иерархию. То есть, вы можете создать на сайте страницу, например, «О компании» и добавить в нее подстраницы «Наша команда», «Наша миссия», «Контакты» и т.п. Если при этом в шаблоне использовать функции wp_list_pages для вывода списка страниц, то иерархия будет видна для посетителей. Это потом уже разработчики добавили раздел меню сайта в wordpress где можно компоновать любые ссылки.

Подобная иерархия может пригодиться для нестандартных требования при разработке веб-проекта — допустим, заказчик захочет выводить в боковой колонке список подстраниц для того или иного раздела. Рассмотрим как это можно сделать (за решение спасибо автору этой статьи ). Вот пример как это может выглядеть на сайте.

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

Но перед этим напомню еще разок как создается подстраница. При создании страницы в специальном блоке «Атрибуты страницы» выбираете родительскую.

Если не видите данный блок, то сверху есть ссылка «Настройки экрана», где можно включить отображение блока.

Добавление функции

Первым делом нам нужно добавить в файл functions.php специальную функцию.

function wpb_list_child_pages ( ) { global $post ; if ( is_page ( ) && $post -> post_parent ) $childpages = wp_list_pages ( 'sort_column=menu_order&title_li=&child_of=' . $post -> post_parent . '&echo=0' ) ; else $childpages = wp_list_pages ( 'sort_column=menu_order&title_li=&child_of=' . $post -> ID . '&echo=0' ) ; if ( $childpages ) { $string = '<ul>' . $childpages . '</ul>' ; } return $string ; } add_shortcode ( 'wpb_childpages' , 'wpb_list_child_pages' ) ;

function wpb_list_child_pages() { global $post; if ( is_page() && $post->post_parent ) $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' ); else $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' ); if ( $childpages ) { $string = '<ul>' . $childpages . '</ul>'; } return $string; } add_shortcode('wpb_childpages', 'wpb_list_child_pages');

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

В первом случае (если страница родительская), то отображаются все ее подстраницы. Во втором (если это подстраница), то выводятся все подстраницы этой же родительской страницы.

Простой пример. У вас есть такая структура сайта:

О компании

— Наша миссия

— Наша команда

— Контакты

На какой бы из подстраниц вы не были, вы всегда увидите их все. То же самое будет отображаться и для главной страницы «О компании». В противном случае функция просто не будет ничего возвращать.

Нюансы при выводе подстраниц

С выводом подстраниц все немного сложнее. Лично у меня код автора скрипта работать на 100% отказался, поэтому я внес некоторые правки.

Итак, дабы выводить список подстраниц для определенной конкретной страницы (при редактировании ее в текстовом редакторе) вы можете использовать шорткод.

Автор заявляет, что шорткод может также применяться в текстовых виджетах темы. Если это не работает, то в файл functions.php нужно добавить строку:

add_filter ( 'widget_text' , 'do_shortcode' ) ;

add_filter('widget_text', 'do_shortcode');

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

Именно поэтому можно также использовать вызов функции из шаблона — например из файла шаблона страниц page.php. В базовом примере это делается так:

<?php wpb_list_child_pages ( ) ; ?>

<?php wpb_list_child_pages(); ?>

У меня не работало. Дело в том, что функция wpb_list_child_pages, судя по коду, просто возвращает строку. Поэтому ее еще нужно отобразить.

<?php echo ( wpb_list_child_pages ( ) ) ; ?>

<?php echo(wpb_list_child_pages()); ?>

Код работает для файла шаблона страницы page.php. Но отказывается работать в сайдбаре. Для того чтобы функция выводила список подстраниц в боковой панели я добавил в нее еще одну глобальную переменную

Вставляете сразу после global $post в файле functions.php. Если вывод информации в сайдбаре организован через виджеты, то пригодится плагин PHP Code Widget который позволяет использовать php функции для виджетов.

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

rss