Заметки по Wordpress

Создаем уникальный Sidebar для каждой категории в WordPress

Ко мне стали часто обращаться с вопросом: что сделать, чтобы для каждой категории выводилась уникальная боковая панель? Поэтому сегодня мы создаем уникальный sidebar для каждой категории в wordpress.
Это на самом деле не сложно. К тому же делать мы это будем не прибегая к помощи плагинов.
После прочтения этой статьи вы научитесь создавать для каждой категории свою уникальную (повторюсь) боковую панель, в которой будете размещать разные виджеты. Причем боковая панель будет создаваться автоматически при создании новой категории в блоге.

Шаг 1. Открываем файл functions.php и добавляем следующую строчку:

add_action( 'widgets_init', 'category_sidebars' );

function category_sidebars() {
	$categories = get_categories( array( 'hide_empty'=> 0 ) );

	foreach ( $categories as $category ) {
		if ( 0 == $category->parent )
			register_sidebar( array(
				'name' => $category->cat_name,
				'id' => $category->category_nicename . '-sidebar',
				'description' => 'This is the ' . $category->cat_name . ' widgetized area',
				'before_widget' => '<aside id="%1$s" class="widget %2$s">',
				'after_widget' => '</aside>',
				'before_title' => '<h3 class="widget-title">',
				'after_title' => '</h3>',
			) );
	}
}

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

Не забываем сохраниться.

Шаг 2. Переходим к файлу sidebar.php, где добавляем примерно такие строки кода(надо разбираться в какое место вставлять этот код):

$sidebar_id = ( is_category() ) ? sanitize_title( get_cat_name( get_query_var( 'cat' ) ) ) . '-sidebar' : 'sidebar';
dynamic_sidebar( $sidebar_id );

Приведенный выше код будет считаться по умолчанию боковой панелью с ID категории. Если вы находитесь на странице с определенной категорией, то он будет отображать пользовательский sidebar этой категории.
Данный код дает возможность следить, какие виджеты отображаются в каждой категории, что позволяет иметь более полный контроль над конструкцией Вашего блога на WordPress.

Итак, всего за пару шагов мы создаем уникальный Sidebar для каждой категории в WordPress.

Новые посты

Каркас шаблона wordpress

Гордеев Игорь

Создаем пользовательские типы сообщений без труда.

Гордеев Игорь

Отключение автоформатирование в wordpress

Гордеев Игорь

17 комментариев

Тетя Маша 27.12.2012 / 13:16

Это что-то новенькое. А я замахнулась на использование шаблона Страйкинг и там есть функция ручной настройки сайд баров.

Ответить
n1se 03.01.2013 / 20:05

Круто! На своем WP блоге попробую эту штуку.

Ответить
Наталья 18.01.2013 / 04:40

Фух, с первым кодом разобралась. Встал и сайт на месте остался, а второй куда вставить не пойму. Пробовала в разные места, но вообще ничего не появляется. А как это должно вообще выглядеть? Как рубрики у вас в сайдбаре или по-другому? и влияет ли на это ширина сайдбара? У меня около 160 всего лишь.
Вот код сайдбара файла. Может подскажете куда код второй вставить? И вообще подходит ли мне этот рецепт?

Ответить
Гордеев Игорь 18.01.2013 / 10:18

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

Ответить
Наталья 18.01.2013 / 13:26

Я второй раз вставила код тут в коммент, выделила его и нажала кнопку КОД, и отправила, вот так все равно не получилось что-то нормально.

А почему не отображается в сайдбаре ничего? Я не туда вставляю или шаблон у меня не позволяет? Нельзя ли скриншот показать как визуально выглядит вся красота? Категорий то много уже есть.

Ответить
Гордеев Игорь 18.01.2013 / 14:19
< ?php ?>

все вставляется.

Скриншота нет и что там показывать, в разных рубрикой свой сайдбар.

Ответить
Гордеев Игорь 18.01.2013 / 14:26

Примерно как работает можно посмотреть тут Рукодельная мастерская. Разные сайдбары на главной и по вкладке Работы

Ответить
Наталья 19.01.2013 / 01:19

Зашла в свои виджеты и обомлела – все там появилось. Вопрос что с ними дальше делать? Они особнячком лежат пустые в виджетах (сайдбары реально) а как их чтоб видно было сделать? Как ими пользоваться?

Ответить
foll90 11.02.2013 / 20:47

Интересно спасибо =)

Ответить
Сергей 16.04.2013 / 21:03

Скажите, пожалуйста, а как сделать так, чтобы у каждого заголовка РУБРИКИ был свой цвет.

Ответить
Гордеев Игорь 18.04.2013 / 15:55

Ой, это надо что со стилями ковырять, точно и не скажу. А зачем вам такой “Геморрой”?

Ответить
Виталий 10.06.2013 / 12:27

Вот такой код sidebar.php в какое место вставить код вывода




     Appearance -> Widgets 
            */
            $theme->hook('sidebar_primary');
        }
        $theme->hook("sidebar_primary_after");
    ?>
    





     Appearance -> Widgets 
            */
            $theme->hook('sidebar_secondary');
        }
    ?>
    

Ответить
Гордеев Игорь 11.06.2013 / 09:37

Попробуйте так прописать:


 
 
    
$sidebar_id = ( is_category() ) ? sanitize_title( get_cat_name( get_query_var( 'cat' ) ) ) . '-sidebar' : 'sidebar';
dynamic_sidebar( $sidebar_id );
    ?>
    

Ответить
Виталий 07.07.2013 / 19:17

Ок, спасибо все работает

Ответить
Виталий 07.07.2013 / 19:42

Рано обрадовался. Работает, если урл категории на русском написан

Ответить
Виталий 07.07.2013 / 21:18

Какой-то глюк. После создания такого сайдбара, нужно все категории удалять и снова создавать иначе у меня не показывает сайдбар

Ответить
Random_hero 02.09.2013 / 16:40

Никак не пойму куда именно вставить код в sidebar.php

Ответить

Оставить комментарий