Вызов подстраниц и плагин Fold page list

Как известно, вес PR распределяется поровну между всеми ссылками на странице, а это значит, что чем меньше ссылок, например, на главной странице — тем больший вес достанется каждой из них. Что это дает нам? Конечно же более высокий PR тех страниц, на которую ссылается главная (ведь у главной по статистике самый большой PR). C другими страницами по аналогии.

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


На заметку
Ограничить уровень вложенности страниц можно через параметр 'depth' = 1 (или 2, 3 и т.д.) в коде

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

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

Первая, самая простая, вставить дополнительный код в файле page.php в конце цикла вызова контента:


wp_list_pages('title_li=&child_of='.$post->ID.'&show_date=modified
&date_format=$date_format'); ?>
            

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

Поэтому советую использовать следующий код.

if($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ($children) { ?>
<ul></ul>
            

При этом список подстраниц будет выводится и при их просмотре.

Также можно поиграться с оформлением. По умолчанию в WordPress для такого списка будут генерироваться некоторые стили.

 .pagenav { ... }
.page_item { ... }
.current_page_item { ... }
                .current_page_parent { ... }

Их можно прописать в файле styles.css вашей темы, и сделать оформление, которое вам по душе.

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

.current_page_item a { text-decoration: none; color : #000; border: none; }
                .current_page_parent a { text-decoration: none; color : #000; border: none; }

При этом ссылка будет выглядеть просто как основной текст (в моем варианте оформления текущая ссылка имет черный цвет).

Тем не менее, оба эти варианта не совсем подойдут, если вы хотите выводить подобный список подстраниц в сайдбаре.

Для этого есть плагин Fold page list.

Он как бы «складывает» стандартную иерархию, и вы видете посдстраницы только при переходе на родительскую страницу.

Чтобы плагин заработал, его необходимо загрузить и активировать, а также заменить в файле sidebar.php строку вида

</span></span>


<span style="text-decoration: line-through;"><span style="line-through;">на</span></span>

<span style="text-decoration: line-through;"><span style="line-through;">

Скачать плагин Fold page list с сайта разработчика

Установка этого плагина — очень неплохое решение, однако иногда в его работе встречается «выпадение» некоторых страниц, они становятся просто невидны в навигации. Так что пользоваться им или нет — выбор за вами.

Чтобы упростить задачу качаем плагин Fold Page Menus, в отличие от  Fold page list он не создает чрезмерных запросов к базе данных, но функции у него такие же.

По совету Соники, можно вместо Fold page list также можно использовать вот этот плагин.