Отдельное меню для разных категорий WordPress
5 апреля 2012 в 23:25 в категории Статьи о php 2 комментарияПривет всем!
Просмотрев статистику моего сайта, я обратил внимание, что многие посетители заходят на сайт в поисках подобной статьи, но находят информацию лишь о том, как создать разный шаблон для каждой категории в WordPress, и я решил исправить ситуацию и рассказать немного о том, как можно добавить разные сайд-бары (sidebars), они же меню на наш сайт на WordPress.
Итак, пожалуй я расскажу как WP работает с файлами сайд-баров (меню).
- Шаблоны панелей — WordPress может включить в код страницы содержимое файлов с именем sidebar-имя.php при помощи вызова в нужном месте функции get_sidebar(‘имя‘).
- Динамические панели — WordPress так же может работать с динамическими сайд барами, которые изменяются из админки. Для них нужна функция dynamic_sidebar(‘имя‘).
Рассмотрим пример шаблонной панели. (Если вам нужно такое меню только в определенной категории — читайте сначала эту статью.) В соответствующем файле категории, в том месте, где необходимо вывести информацию из файла, добавляем следующую строку:
<?php get_sidebar('nikitasp'); ?>
Эта строка добавит весь имеющийся код из файла sidebar-nikitasp.php.
Таким образом мы добавили свой первый сайд-бар на наш сайт.
Но! Скорей всего, вам захочется редактировать его из админки, выносить туда виджеты и т.п. Для этого необходимо зарегистрировать наш sidebar (сайд-бар, меню).
Регистрируем новый сайд-бар в WordPress.
Для этого нам понадобится функция:
register_sidebar()
И в нее будем передавать следующий массив параметров:
<?php $args = array( 'name' => 'Имя сайд-бара', 'id' => 'nikitasp-sidebar', 'description' => 'New sidebar register lesson on nikita-sp.com.ua website', 'before_widget' => '<li>', 'after_widget' => '</li>, 'before_title' => '<h1>', 'after_title' => '</h1>' )); ?>
Где:
- name — Название сайд бара.
- id — айдишник нашего блока, написанный латиницей в нижнем регистре без пробелов.
- description — Описание сайдбара, где он находится и т.п. (с 2.9 версии)
- before_widget — html-код, который будет выведен перед каждым виджетом.
- after_widget — html-код, который будет выведен после каждого виджета.
- before_title — html-код, который будет выведен перед каждым заголовком каждого виджета.
- after_title — html-код, который будет выведен после каждого заголовка каждого виджета.
Эту функцию нам необходимо расположить в файле functions.php. Можно сразу после <?php.
Вот какой вид имеет подобная функция:
<?php add_action( 'widgets_init', 'my_register_sidebars' );
function my_register_sidebars() {
/* Регистрируем сайд бар */
register_sidebar(
array(
'name' => 'NikitaSp',
'id' => 'nikitasp-sidebar',
'description' => 'New sidebar register lesson on nikita-sp.com.ua website',
'before_widget' => '<li>',
'after_widget' => '</li>',
before_title' => '<h1>',
'after_title' => '</h1>'
));
/* Копируйте и вставляйте ниже код функции register_sidebar() для добавления дополнительных сайд-баров. */
}
?>
И в нужном файле делаем вызов динамического sidebar следующим образом:
<?php dynamic_sidebar('nikitasp-sidebar'); ?>
Вот и все! Удачного кодинга!

(435 оценок, среднее: 4,80 из 5)
2 комментария
блять и где тут отдельное меню для разных категорий ебаные волки
Уважаемый,
1) Использование ненормативной лексики в комментариях не приветствуется.
2) Читайте статью, в ней подробно расписано как создать отдельное меню для разных категорий. Или вы думали что тут будет готовое решение которое нужно будет просто скопировать и продать заказчику за 100$?
менталитет… О времена, о нравы.