Как добавить дополнительный sidebar для виджетов в WordPress?

Для добавления необходимых плагинов и дополнений на страницу в WordPress необходимо просто перетащить в админке интересующий вас виджет на sidebar. Таким образом, даже новички в движке WordPress могут без осложнений видоизменить свою боковую панель (и не только её).
Виджеты в WordPress

Порой разработчики темы предоставляют на выбор несколько возможных сайдбаров, куда вы можете перетащить widget . Но бывают и темы, где сайдбаров 1-2, и они используются чисто для нужд самой темы (то есть новые виджеты вы туда запихнуть не сможете).

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

Для начала необходимо зарегистрировать ваш сайдбар. Это можно сделать в файле functions.php в папке с шаблоном. Некоторые разработчики шаблонов создают спец. функцию по регистрации сайдбаров. К примеру, function twentyten_widgets_init() {}. Это не принципиально. Просто найди то место в коде, где происходит регистрация. Выглядит это примерно так:

register_sidebar(array(
	'name'=>'Site description',
	'before_widget' => '<div class="site-description">',
	'after_widget' => '</div>'
));

Как добавить свой сайдбар?

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

register_sidebar( array(
	'name' =>'Second sidebar',
	'id' => 'secondary-widget-area',
	'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
	'after_widget' => '</li>',
	'before_title' => '<h3 class="widget-title">',
	'after_title' => '</h3>',
) );

Name – название вашего sidebar. оно будет отображаться в админке.

id – уникальный идентификатор. Он вам понадобиться при добавлении на страницу (об этом ниже).

before_widget – код/текст, который будет вставлен перед каждый виджетом.

after_widget – соответственно, код/текст, который будет вставлен после каждого виджеа.

before_title – код/текст, который будет вставлен перед заголовком виджетов.

after_title – код/текст, который будет вставлен после заголовком виджетов.

После добавления выше приведённого кода в файл, сохраните его и зайдите на страницу виджетов в административной панели. Теперь точно так же, как и с остальными сайдбарами, вы можете перетаскивать на новый необходимые виджеты. Чтобы этот сайдбар отобразился на вашем веб-сайте, вам нужно открыть соответствующий файл шаблона, а именно sidebar.php, и найти код:

<div class="sidebar">
     ...
</div>

Вам необходимо в том месте, где вы хотите видеть свой сайдбар, добавить его между открывающим и закрывающими тегами. Будет примерно так:

<div class="sidebar">

	///...
	<?php  dynamic_sidebar( 'secondary-widget-area' ); ?>
</div>

Для красивого вывода, можете включить этот код в блок:

<div class="sidebar">

	
	<div id="secondary"  role="complementary" class="widget widget_recentposts_thumbnail">
	  <?php  dynamic_sidebar('secondary-widget-area' ); ?>
	</div>
</div>

Как вы уже наверно заметили secondary-widget-area при выводе на странице – это имя сайдбара. Оно должно быть точно таким же, как имя указанное при регистрации в файле functions.php. Теперь, редактируя файл style.css придать сайдбару нужный вид.

  Категории: php, WordPress
  • http://partnergu.ru/ Partnerkas

    во всех шаблонах один и тот же код?

    • http://suvitruf.ru Suvitruf

      dynamic_sidebar и register_sidebar – функции движка. Так что да, во всех.

    • enlindnuare

      Добрый день.
      Я бы очень хотел разместить тут много ссылок на качественные ресурсы по теме софта.
      Скажите можно?
      если нет – удалите
      если да – то я вернусь

      • http://suvitruf.ru Suvitruf

        В комментах? )

  • http://biophoton.ru Natascha Kondratenko

    Здравствуйте!
    Мне не удалось в файле functions.php найти соответствующее место о регистрации сайдбара.

    Как мне зарегистрировать дополнительный сайдбар?

    Заранее благодарна
    Наташа

    • http://suvitruf.ru Suvitruf

      допишите в самом низу файла :
      function my_widgets_init()
      {

      }
      add_action( ‘widgets_init’, ‘my_widgets_init’);

      И в методе my_widgets_init используйте register_sidebar

  • http://startrek33.com/ Александр Ветров

    Очень полезная информация. Большое спасибо.

  • http://zaohota.ru Владимир

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

    • http://suvitruf.ru Suvitruf

      Можно ссылку на сайт?

      • http://zaohota.ru Владимир

        Снес что настроил взад, но все равно пришлось еще и откат далать.
        http://zaohota.ru

        • http://suvitruf.ru Suvitruf

          Вы новый сайдбар то точно туда пихаете? Надо по аналоги с уже имеющимися, в стилях дело.

  • http://zaohota.ru Владимир

    Доброе утро.
    Я в html не разбираюсь, поэтому тупо скопировал и вставил коды сразу же после кодов первого сайдбара. Обновив, перешел в раздел виджеты и обнаружил, что форма вставки виджетов осталась только одна(2 сайдбар).
    Вставил парочку виджетов и перешел на страницу, где увидел, что второй сайдбар вставился выше первого в одном столбце. Поскольку такая установка меня не устраивает, а мне необходимо иметь второй сайдбар слева или справа от темы отдельной колонкой, то я удалил коды. После обновления я получил страничку с неуправляемыми виджетами, поэтому сделал откат на хостинге и вернулся к первоначальному виду. У вас кстати в статье не указано где вставлять коды, перед первым сайдбаром или после, а так же где садбар установится, слева или справа от темы. Если установка отдельного сайдбара к моей теме не возможна, то вопрос закрываем. Поищу другие возможности.
    С уважением.
    Владимир.

    • http://suvitruf.ru Suvitruf

      Вот как пример A-posteriori.ru. Там справа два сайдбара. В одном рубрики, в другом всё остальное.

      Что же касается вашего вопроса: “Нельзя ли его поместить слева от темы или справа от первого сайдвбара?”
      Можно, но без знания HTML и CSS этого не сделать.

      • http://zaohota.ru Владимир

        Спасибо. Буду искать другие возможности.

        • http://suvitruf.ru Suvitruf

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

          Удачи в поисках.

      • http://delaisaity.ru/ Анжелика

        Поставила на сайт заказчика дополнительный сайдбар и подвал с виджетами. Спасибо автору.
        А всем читателям хочу сказать, прежде чем в коды лезть, получите хотя бы базовые знания html, php и css.

        Для перемещения чего-либо на сайте используйте волшебный margin.

        • http://delaisaity.ru/ Анжелика

          Хочу заметить, что после знака => должен пробел стоять.

  • http://domovichek.ru Дима

    Обязательно попробую как-нибудь…

  • Daticc77

    :)

  • Дмитрий

    Благодарочка, братюнь;)

  • http://musicworker.ru Сергей

    Не сталкивался ли кто с тем, что когда убираешь с сайдбара определенный виджет внезапно исчезал контент? Сижу уже 4 часа, перерыл все… вывожу виджеты в два сайдбара путем:

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

    • http://suvitruf.ru Suvitruf

      Контент исчезает = белая страница? Или есть разметка, но именно сама информация пропадает?

  • http://divizka.ru Simon

    Мой сайт при переходах со страницы на страницу в панели состояния браузера после загрузки любой страницы виден подозрительный сайт.
    Обычно в панели состояния пишет “Готово”
    У меня после слова “готово” высвечивающеюся выше описанные сайты.
    Как я понимаю, где-то кто-то сделал редиректы в кодах, если имеете какие догадки напишите, я это связываю именно с сайт барами, но это догадки.

  • http://divizka.ru Simon

    В файле sidebar.php я нашел подозрительный код, как думаете что это?

    • http://suvitruf.ru Suvitruf

      Чтобы код вставлять сюда, юзайте тэг code.

      Вы вообще WP, плагины и темы откуда качали? Я когда-то ipb форум с левого сайта качал, там везде редиректы были понапиханы. Надо из проверенных источников)

      • http://divizka.ru Simon

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

  • http://divizka.ru Simon

    И ещё я думаю это у многих есть но не многие обратили на это внимание, причем в Хроме и Интернет эксплорере эта строка не видна, в мозиле видна. Так что народ проверяйте кому накручиваете бабки в гугле (типа невзначай)…

  • http://fat-down.ru Александр

    Скажите, а можно таким образом зарегить 2 или 3 сайдбара? Мне это надо для организации вывода на них разных меню на основе виджетов. Другого метода, к сожалению не придумал.
    Заранее благодарен, Александр.

    • http://suvitruf.ru Suvitruf

      Да сколько угодно можно)

  • Владимир

    Спасибо за подсказку. В файле functions.php сам догадался прописать код по аналогии. А вот чтобы связать functions.php и sidebar.php пригодилась Ваша подсказка. Спасибо.

  • Евгений

    Здравствуйте, я подобрал шаблон с 3-мя колонками, но они (колонки) отображаются на сайте ниже первой колонки в одном столбце! Подскажите пожалуйста,- как их параллельно друг другу поставить? Тема: Desk Mess Mirrored, сайт находится в разработке (не индексируется).

    • http://suvitruf.ru Suvitruf

      Как? Менять файлы шаблона)

      Сейчас пока нету времени на это. Как освобожусь, проверю.

  • Евгений

    Ещё раз здравствуйте, у меня возник другой вопрос- кто нибудь может сделать сайдбары на моём сайте, параллельно друг другу за меня? не бесплатно конечно-же! и сколько это будет стоить?

    • http://suvitruf.ru Suvitruf

      А среди бесплатных готовых тем для движка нет подобных?

  • Евгений

    Да в том-то и дело, мне именно эта тема нравится!

  • Валерий

    хотел добавить Sidebar, а получил вот это
    Parse error: syntax error, unexpected T_DOUBLE_ARROW in /home/volno467/public_html/wp-content/themes/BusinessBlog/functions.php on line 11

    как исправить ситуацию?

    • http://suvitruf.ru Suvitruf

      Строку покажите, на которую ругается)

  • Мстислав Осов

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