Вывод меню первого и второго уровня в WordPress
Помимо дизайна сайтов я также занимаюсь и разработкой шаблонов для WordPress на заказ. Естественно каждый раз узнаю (или стараюсь узнать) что-то новое. И теперь вы сможете развиваться вместе со мной, т.к. каждый созданный шаблон будет освещаться (ну может, конечно, не каждый, а только тот, который может быть интересен). Вы узнаете что и как было реализовано.
Прежде, чем мы начнем, мой первый совет вам: прежде чем приступать к интеграции шаблона, продумайте логику вывода информации.
Начнем с шаблона для сайта “Эффективные уроки”, посвященному изучению иностранных языков:

С виду обычный сайт визитка на трех языках с одинаковыми пунктами меню для каждого раздела. Естественно меню должно формироваться и выводиться автоматически, а не быть зашитым в шаблон намертво для каждого из трех языков.
Сайт у нас имеет двухуровневую структуру, разделы которой выводятся в разных частях макета:
- Норвежский язык
- Пункт 1
- Пункт 2
- Пункт 3 …
- Английский язык
- Пункт 1
- Пункт 2
- Пункт 3 …
- Русский язык
- Пункт 1
- Пункт 2
- Пункт 3 …
Все страницы на сайте реализованы именно через “Страницы” (Pages), а не через “Записи” (Posts)
Для вывода первого уровня (названия языков) пишем:
<?php wp_list_pages('depth=1&sort_column=menu_order&title_li='); ?>
где depth=1 - уровень меню,
sort_column=menu_order - сортировка согласно порядку, установленному в свойствах страницы (блок “Аттрибуты”)
title_li= - говорит о том, что заголовок для данного блока не выводится.
Переходим к меню второго уровня. Оно должно выводиться автоматически и оставаться на внутренних страницах при перемещении между разделами. При этом меню у нас разбито на два блок (вверху справа и слева, в сайдбаре).
Код будет выглядеть следующим образом:
<?php
if($post->post_parent) {
wp_list_pages('sort_column=menu_order&exclude=111&title_li= &child_of='.$post->post_parent);
}
elseif(wp_list_pages("child_of=".$post->ID."&exclude=111&echo=0")) {
wp_list_pages('sort_column=menu_order&exclude=111&title_li=&child_of='.$post->ID);
}
?>
Новый параметр exclude=111 указывает на то, какую страницу надо исключить из вывода; если страниц предполагается несколько то указываем id через запятую (в нашем случае пусть это будет 111 и 222): exclude=111,222
В целом надо заметить, что WordPress вещь хорошая и очень гибкая. Существенный минус этой CMS - большая нагрузка на сервер (особенно по сравнению с DLE). Так что если вы планируете строить и продвигать сайт, который в последствии будет собирать по десяткам тысяч посетителей ежедневно, то стоит задумать об аренде удалённого сервера. Вы получите полный доступ к настройкам и сможете контролировать работу проектов самостоятельно. Ну а если не разбираетесь в этом сами, то сможете заказать администрирование.
Привет, пока нет комментариев, будь первым!