Сайдбары в WordPress

Прежде всего давайте уточним несколько общих моментов про сайдбары:

  • Сайдбар — это область сайта слева или справа от основного контента (одним словом боковая колонка),
  • Сайдбар в WordPress — это любая область на сайте, в которой выводятся виджеты;

В обоих случаях предназначение у сайдбаров одинаковое — навигация по сайту, ссылки на социальные сети, виджеты соц сетей, виджеты каких-либо сторонних сервисов (например поиск авиабилетов) и т.д.

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

В этом шагу мы рассмотрим пошагово как создать два сайдбара — один в боковой колонке и один в подвале (футере) сайта.

Шаг 1. Регистрация сайдбара

Для начала скажу, что в разных темах WordPress сайдбары регистрируются по-разному, в некоторых ещё до сих пор используется способ 2007-го года. Почему? Да просто некоторые липовые разработчики любят неосознанно копировать код из других тем, их даже не волнует, что тема, которую они используют в качестве своего «на все случаи» шаблона, не обновлялась более 5 лет.

Это я к тому, что код, который я дам вам сегодня может отличаться от кода, используемого в вашей теме — пусть это не станет поводом для волнений, просто замените старый код на новый.

Как я уже говорил, мы будем создавать два сайдбара — в боковой колонке и в футере, в этом нам поможет функция register_sidebar() (если что-то будет непонятно в коде — смотрите документацию функции). Хук widgets_init обязателен!

Код для файла functions.php:

function true_register_wp_sidebars() {
 
	/* В боковой колонке - первый сайдбар */
	register_sidebar(
		array(
			'id' => 'true_side', // уникальный id
			'name' => 'Боковая колонка', // название сайдбара
			'description' => 'Перетащите сюда виджеты, чтобы добавить их в сайдбар.', // описание
			'before_widget' => '<div id="%1$s" class="side widget %2$s">', // по умолчанию виджеты выводятся <li>-списком
			'after_widget' => '</div>',
			'before_title' => '<h3 class="widget-title">', // по умолчанию заголовки виджетов в <h2>
			'after_title' => '</h3>'
		)
	);
 
	/* В подвале - второй сайдбар */
	register_sidebar(
		array(
			'id' => 'true_foot',
			'name' => 'Футер',
			'description' => 'Перетащите сюда виджеты, чтобы добавить их в футер.',
			'before_widget' => '<div id="%1$s" class="foot widget %2$s">',
			'after_widget' => '</div>',
			'before_title' => '<h3 class="widget-title">',
			'after_title' => '</h3>'
		)
	);
}
 
add_action( 'widgets_init', 'true_register_wp_sidebars' );

Вот что получилось у меня на странице Внешний вид > Виджеты:

Зарегистрированные сайдбары

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

Шаг 2. Как отобразить сайдбары на страницах сайта?

Как и в случае из первого шага, в разных темах вы можете найти разный код, отвечающий за вывод сайдбаров на сайте. Я рассмотрю только один способ, который использую сам, с использованием функций is_active_sidebar() и dynamic_sidebar().

В двух словах о том, для чего нужны эти функции:

Давайте теперь выведем те два сайдбара, которые мы создавали в прошлом шаге. И начнем с боковой колонки:

<?php if ( is_active_sidebar( 'true_side' ) ) : ?>
 
	<div id="true-side" class="sidebar">
 
		<?php dynamic_sidebar( 'true_side' ); ?>
 
	</div>
 
<?php endif; ?>

Куда вставлять код? Ну где хотите вывести сайдбары, туда и вставляйте. Не уверены в какой файл? Ну, вообще это полностью зависит от вашей темы, но вероятнее всего, что код боковой колонки вставлять в sidebar.php, а код футера в footer.php. Возможно вам ещё пригодится документация функций get_sidebar() и get_footer().

Футер:

<?php if ( is_active_sidebar( 'true_foot' ) ) : ?>
 
	<div id="true-foot" class="sidebar">
 
		<?php dynamic_sidebar( 'true_foot' ); ?>
 
	</div>
 
<?php endif; ?>

Ещё несколько советов относительно сайдбаров

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

  • Если выводимый садбар не имеет виджетов, то при помощи if и else можно задать код, который будет выполняться в этом случае:
    if ( is_active_sidebar( 'true_foot' ) ) :
    	dynamic_sidebar( 'true_foot' );
    else :
    	// код по умолчанию на случай, если сайдбар пустой
    endif;
  • Не нужно использовать PHP-функцию function_exists() для функции dynamic_sidebar() и других функций WordPress. Просто иногда используют. Это ни к чему.
  • Некоторые подключают файл sidebar.php через include() или require(). Чего вы хотите этим добиться? Увеличения производительности? Сомневаюсь, что причина медленной загрузки вашего сайта кроется именно в этом. А для подключения sidebar.php используем специально предназначенную для этого функцию get_sidebar().
  • Функции register_sidebar() и register_sidebars() позволяют не указывать ID сайдбаров при регистрации. Всегда указывайте ID! Во-первых, вам будет удобнее и нагляднее работать с сайдбарами на вашем сайте. Во-вторых, это поможет избежать проблем при установке сторонних плагинов / тем.

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

Как отключить сайдбар в WordPress?

Могу предложить вам пару вариантов решения этой задачи:

  • Вручную — удаляем функции register_sidebar() и dynamic_sidebar() из файлов functions.php и sidebar.php. Этот способ самый действенный. Если же вы не хотите, чтобы после обновления темы все ваши изменения исчезли, используйте дочерние темы.
  • Функция unregister_sidebar() позволяет отключить сайдбар (но нужно знать его ID, да и код из sidebar.php всё равно придется удалять вручную).

Миша Рудрастых

Впервые познакомился с WordPress в 2009 году. С 2014 года меня можно встретить на WordCamp — официальной конфе по WordPress, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля — пишите мне.

Комментарии 151

  • Daria:

    Спасибо, Миша! Все доступно, понятно и интересно.

  • Андрей:

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

    • Миша:

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

      • Михаил:

        Подскажите пожалуйста, а как в таком случае перерабатывать код сайта, чтобы боковая колонка использовалась без функции сайдбаров и виджетов. Я тоже чую, что такие плагины, как управление сайдбаром подарят мне незабываемые нагрузки, поэтому и нашел вашу статью, как все сделать ручками. Но вот чтобы так, без лишних виджетов вообще. Это было бы здорово!)

        • Миша:

          Просто найдите в коде сайта те функции, которые описаны в этой статье для регистрации сайдбаров и удалите их 🙂 Искать в functions.php и sidebar.php.

          Про нагрузки вы зря — это зависит от того, какие именно плагины.

  • Катерина:

    Добрый день!
    в Lubith.com создала тему сайта с двумя (слева и справа) сайтбарами...зашла в админ.панель WP, установила эту тему, а левого сайтбара нет!!!((( как мне отобразить его?
    Спасибо.

    • Миша:

      Добрый день!
      Обычно такие вещи должны быть либо в настройках темы либо в настройках, которые находятся непосредственно на страницах редактирования постов.

  • Александр Гудов:

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

  • Александр Гудов:

    Я поменял их в коде сайдбара, но изменений не наблюдается

  • Виктория:

    Здравствуйте! Сайдбары в футере в админке появляются. На сайте в виде ромбиков текст (как зашифрованный). В чем может быть причина? В style.css нужно что-то прописывать?

  • Елена:

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

  • Елена:

    Спасибо, Миша!
    К сожалению не знаю твоей email. Если ответом отправлять письмо на почему - то возвращает.
    Вроде разобралась, но еще не совсем. Вот посмотри, может что подскажешь. http://freekreat.ru/forums/.
    Сейчас на форумах он подгружает вместо page.php, который по умолчанию грузит - forum.php. Там все нормально страница формируется без сайдбара. Но, сцуко в опере нормально все показывает, а в Mozilla Firefox вся верстка плывет. Даже ослина IE и тот нормально показывает. Может у меня с компом какой глюк?

  • Елена:

    Спасибо, помог вылечить :). Все норм. кажет. То я уже снова думаю сидеть шаблон ковырять

  • Илья:

    Здравствуйте.
    Никак не могу нагуглить, как сделать в вордпрессе что бы высота сайдбара всегда была равна высоте основной страницы (если страница выше)?
    И соответственно наоборот, что бы основная страница была высотой с сайдбар (если сайдбар выше)?

    • Велемудр:

      Попробуйте использовать свойство display:inline-table; к родительскому элементу, оно "делает" из них таблицу, всё выравнивается по высоте большего.
      Не работает в ие7.
      Другой метод - вложенность. Много лишних div-ов, но метод работает и в ИЕ6.
      Вот на Хабре описаны несколько способов: http://habrahabr.ru/post/183542/
      Надеюсь Михаил не удалит ссылку.

  • Миша:

    Здравствуйте! Как-то так:

    $('#sidebar').css({'min-height': $('#content').height() });
    $('#content').css({'min-height': $('#sidebar').height() });
  • Велемудр:

    Добрый день Михаил.
    Ответьте пожалуйста, вот у студии RocketTheams в шаблонах есть страницы sidebar-left.php, sidebar-right.php и sidebar-page.php, мне ну очень интересно, возникнуть необходимость может в любой момент, но именно по этому виду создания страниц-шаблонов ничего не нашёл.
    Как я понимаю, не только сайд-бар регистрируется, где-то ещё и страницу... регистрируют что ли, не знаю как это называется, но это разное с назначением шаблона через метки и указатели в странице, тут этим и не пахнет.
    Объясните, пожалуйста, как эти страницы могут работать и желательно пример.
    Благодарю!

  • Велемудр:

    Похоже всё проще... настолько проще, даже не верится.
    в get_sidebar() параметром указывается имя или переменная с именем, соответствующем имени шаблона, которое написано после тире, вот и всё.
    мда...
    В любом случае благодарю ))

  • Сергей:

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

  • Слава:

    наконец-то нашел нормальную, адекватную и понятную статью. В закладки !!! СПАСИБО !))))

  • илдар:

    а как сделать чтобы было не вертикальным а горизонтальным размещение информации на сайт баре?

  • Мария:

    А как отключить сайдбар только на одной странице?

  • Елена:

    Здравствуйте, Михаил.
    Скачала немного кривую тему, часто кривизны исправила, но sidebar выводится внизу страницы, а не сбоку. Вот, видите, внизу страницы видео - это сайдбар на самом деле: http://sofia-psy.ru/silnaya-zhenshhina-i-muzhchiny/
    В чем может быть проблема, как его вывести сбоку?

  • Владимир:

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

  • Владимир:

    Миша вопрос снимаю, сам нашел ошибку, в наименовании файла.

  • Владимир:

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

  • Егор:

    Спасибо, Миша. 5 минут (в первый раз регистрирую) и три сайдбара в подвале сайта. Осталось стили оформить. 🙂

  • Андрей:

    Доброго времени суток!

    В шаблоне Esteem сайдбары регистрируются в файле esteem/inc/widgets.php
    Сделал все по инструкции, но новых сайдбаров я не вижу в админке.
    При этом изменения в текущих я вижу.

    Подскажите, может ли где то еще лежать упоминание?

  • Наталья:

    Миша, помогите.На школьном сайте в Вордпресс написано: Присвоенное по умолчанию значение равно «sidebar-1». Чтобы убрать это сообщение и сохранить текущее содержимое боковой колонки, задайте вручную параметр id, равный «sidebar-1». Что делать? КАК ИСПРАВИТЬ? Вот вошла я в консоль, что дальше нажимать, Настройки?

  • Наталья:

    Андрей, понимаю, что я "туплю", но... Сайт уже существует не один год, сайдбар, естественно тоже, но, после обновления выскочило сообщение: " ....sidebar вызвана неправильно. В массиве аргументов для боковой колонки «Sidebar» не задан параметр id. Присвоенное по умолчанию значение равно «sidebar-1». Чтобы убрать это сообщение и сохранить текущее содержимое боковой колонки, задайте вручную параметр id, равный «sidebar-1». " И теперь невозможно работать в консоли. Что делать-то? Помогите пошагово. Консоль -Внешний вид-Редактор - Да? А потом что? Я меняла на сайдбар1 id, но всё расплылось на главной странице. Помогите.

    • Андрей:

      задайте вручную параметр id, равный «sidebar-1».

      Я меняла на сайдбар1 id

      Я не понимаю, Вам система написала задайте id равный "sidebar-1", вы задаете "сайдбар1".
      Естественно все расплывется, система не видит зарегистрированного сайдбара с таким id.

      Консоль -Внешний вид-Редактор - Да?

      В первом шаге, написано, открываем functions.php, его и редактируем.
      Ищите хук widgets_init, внутри будут регистрации, по-идее первый и есть "sidebar-1"

  • Егор:

    Здравствуйте Наталья. Файл functions.php в студию. Можно на фриланс его отдать.

  • Наталья:

    Попыталась что-то исправить - "угробила" сайт. Вот будет мне взбучка! Теперь вот что вместо сайта: Ошибка разбора : ошибка синтаксиса, неожиданный '' Боковая панель-1 '' (T_CONSTANT_ENCAPSED_STRING) в /var/www/vaychka/data/www/vaychka.68edu.ru/wp-content/themes/spacious-vision/functions.php на линии 5 Что же делать-то мне теперь? Егор подскажите!

  • Наталья:

    Можно ли сайт-то вернуть? Спасибо

  • Егор:

    Напишите мне на почту jegorfilippov@mail.ru Желательно сейчас 🙂

  • И.В.:

    Здравствуйте, Михаил! Подскажите, если не сложно
    Сайт http://dnevniki.ua/ Требуется: поменять внешний вид как здесь http://dnevniki.ua/wp-content/uploads/2015/05/dnevniki.gif, т.е.:
    - Убрать вообще насовсем sidebar, который справа, на всех внутренних страницах и записях. Это та правая часть страницы, где сейчас выведены страницы и категории. Соответственно надо будет и изменить горизонтальный размер страниц и записей.
    - На всех внутренних страницах и записях сайта хочу добавить то горизонтальное меню, которое расположено вверху на главной странице сайта под блоком логотипа.
    Мпасибо заранее!

  • Влад:

    Добрый день. У меня очень похожая проблема с сайдбаром. "sidebar вызвана неправильно. В массиве аргументов для боковой колонки «Боковая колонка 1»... и так далее". Дело в том, что в wp-includes/functions.php on line 3563 на этой строке нет sidebar. Там написано следующее: trigger_error( sprintf( __( '%1$s was called incorrectly. %2$s %3$s' ), $function, $message, $version ) );
    И во всем вайле ни где не упоминается sidebar. Не понимаю как я могу заменить на sidebar-1 если его там нет. Можете мне помочь?

    • Андрей:

      Вы ищите не в том файле. Вам нужно смотреть в function.php ШАБЛОНА.
      В крайнем случае поиск по содержимому

      • Влад:

        Поиск по содержимому того файла ничего не дал. А в functions.php в шаблоне один единственный короткий код и больше ничего:

        <?php
         
        automatic_feed_links();
         
        if ( function_exists('register_sidebar') )
        	register_sidebar(array(
        		'before_widget' => '<li id="%1$s" class="widget %2$s">',
        		'after_widget' => '</li>',
        		'before_title' => '',
        		'after_title' => '',
        	));
         
        ?>

        Не совсем понимаю где нужно заменить sidebar на sidebar-1

  • Андрей:

    Добавьте id
    register_sidebar(
    array(
    'id' => 'sidebar',

  • Влад:

    Спасибо. Проверю. Только еще один ворос. На некоторых страницах выводится следующее:

    Notice: Функция get_settings с версии 2.1 считается устаревшей! Используйте get_option(). in /home/user1063/data/www/olddendy.net/wp-includes/functions.php on line 3391

    Ни в одном из файло functions.php нет get_settings. Где же его найти?

  • Андрей:

    Попробуйте провести поиск по содержимому всех файлов сайта. Тоталкомандер это умеет.

    • Влад:

      Огромное Вам спасибо! То, что вы посоветовали очень помогло. Заработала админка, а вот сайдбар почему-то пропал совсем ((( Что же делать...
      В сайдбаре написано следующее:

      <?php
      if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
      <?php endif; ?>

      В в functions.php следующее:

      <?php
       
      add_theme_support( 'automatic-feed-links' );
       
      if ( function_exists('register_sidebar') )
      	register_sidebar(array(
      		'before_widget' => '<li id="%1$s" class="widget %2$s">',
      		'after_widget' => '</li>',
      		'before_title' => '',
      		'after_title' => '',
      		'id' => 'sidebar',
      	));
       
      ?>
  • Сплетница:

    Добрый вечер, Михаил! Ваша статья пришлась мне очень кстати! Передо мной как раз стоит задача добавить сайдбар в мой шаблон (изначально есть только правый). Учитывая, что я «не волшебник, а только учусь», я воспользовалась Вашим кодом регистрации сайдбара. Все прошло успешно, он есть на странице виджетов.

    Но далее у меня возникают проблемы: я добавила код в single.php и поставила для эксперимента пару виджетов. Виджеты стали отображаться сверху записи, а не справа, как мне нужно. Убрала код и вписала в sidebar.php — виджеты добавляются в правый сайдбар над теми, которые уже есть.

    В общем, моя задача: добавить левый сайдбар с корректным отображением на странице. Причем он должен отображаться везде. Можете что-то подсказать? Надеюсь, я ясно изложила свою мысль.

    Заранее спасибо.

    • Миша:

      Здравствуйте!
      Просто посмотрите, как добавлен правый сайдбар - по тому же принципу добавьте и левый. Скорее всего придется уменьшить ширину основного контента в CSS.

      • Сплетница:

        А добавить нужно в файл sidebar.php? И тогда он будет отображаться везде?

        • Егор:

          Просто нужно новому сайдбару стили присвоить. Если макет резиновый или адаптивный, то размер контента, скорее всего менять не нужно.
          Я вообще по статье Михаила сделал три сайдбара перед Footer и внес их в один файл sidebar-footer.
          Вот отрывок одного из сайдбаров

          if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
          	<div id="tertiary-1" class="col-lg-4 col-md-4 col-sm-4 col-xs-12" role="complementary">
          		<div class="sidebar-inner">
          			<div class="widget-area">
          				<?php dynamic_sidebar( 'sidebar-1' ); ?>
          			</div><!-- .widget-area -->
          		</div><!-- .sidebar-inner -->
          	</div><!-- #tertiary -->
          <?php endif; ?>

          Вам, скорее всего, нужно

          <?php dynamic_sidebar( 'true_side' ); ?>

          поставить выше вывода контента и назначить классу, какой там он у вас

          .uour-classe{
              float: left;
          }

          Но не факт, шаблоны то разные.

  • Евгений:

    Здравствуйте.
    Интересует следующее: возможно ли только для одной конкретной категории и всех ее статей показывать отдельный сайдбар?
    Пробовал в archive.php различные варианты через:
    "if ( is_category('2') ) { include 'sidebars/sb-recipes.php'; }".... всегда показывает сайдбар только для категории, но не для ее статей.... в ручную указывать ID статей не вариант, т.к. статей в этой категории могут быть тысячи.... Есть ли универсальный код, скажем типа: если категория 2 + все принадлежащие ей статьи --> подключаем сайдбар2.php
    (плагины не интересуют!)
    Заранее спасибо!

  • Odessit:

    Доброй ночи! Подскажите в таком моменте, надо чтобы на сайте был плавающий виджет в боковой колонке, проблема в том, что мы это делаем или плагином или скриптом, но в обоих случаях каждому виджету тогда присваивается id, но если мы посмотрим через tools.pingdom.com то кол-во запросов увеличивается почти в 2 раза, что естественно просто огромное кол-во. Можно как-то присвоить id только одному конкретному виджету или вообще без присвоения сделать виджет плавающим? Пока такого найти нигде не смог((( Заранее благодарю.

    • Миша:

      Здравствуйте!
      А разве присвоение id элементам увеличивает количество http-запросов?

      Возможно запросы увеличились из-за того, что установленный вами плагин наподключал своих скриптов?

      • Odessit:

        Я пробовал и без плагина, через скрипт, добавляется вот таких вот около 160 запросов, как только отключаю плагин или убираю скрипт, всё пропадает.
        Вот на радикал скрин того что вылазит http://s016.radikal.ru/i334/1508/d4/e3a3b9cd1894.jpg
        Да, изначально у меня не прописано %1$s, то есть если через скрипт, то приходится дописывать это.

        • Миша:

          А что за картинка такая, весящая 0 байт - id.gif ?
          Я бы поискал её и удалил (именно из кода, а не на сервере).

          • Odessit:

            Долго искал, не мог её найти, но всё же методом тыка определил, данная картинка, точнее их там 4 получается, id.gif и те 3 ссылки ниже, также ведут на картинки в виде точки, это выводит так тизерка. Но проблема в том, что в плавающем виджете почему-то это всё выводится в среднем 40 раз...То есть если я убираю этот блок плавающий и остаётся блок этой тизерки под статьёй, то они выводятся 1 раз, в неплавающем виджете тоже 1 раз, итого 2 раза, а если виджет становится плавающим, то получается вот такая история. На данный момент на сайте всего 3 виджета, id у них 42, 43, 45, 44 недавно получается удалил 4-й с номером 44, но в админке нет неактивных виджетов, я думал, может оно их все равно где-то как-то видит, и каким то образом в них вставляет? Но только при задании id это происходит, без этого, такого нет. Поэтому вот и вопрос, как задать id одному виджету или создать блок, чтобы только в нём считались виджеты и там был он всего один? Так как проблема где-то в этом(((

            • Миша:

              Тут нужно смотреть код и разбираться, сходу уже подсказать нечего.

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

  • Александр:

    Здравствуйте! Может и мне поможете? Хочу слева сделать узкий сайдбар для размещения рисунков-ссылок на интернет-ресурсы. Что нужно делать? При помощи плагина какого или прописывать как выше указано?
    Прилагаю рисунок http://s017.radikal.ru/i410/1508/b1/33e16a89ca30.png
    Адрес сайта ananichy.by
    Тема Socialize Lite.
    Прочитал вашу статью ... но боюсь напортачить! Тем более в файле functions.php нет функции register_sidebar() ???!!!

  • Александр:

    А как это осуществить? Очень нужно ...

  • Александр:

    Ответа по видиму не будет??!

    • Миша:

      Блин, в отъезде я был в выходные, елы-палы!

      Если не знаете, как добавить колонку в шаблоне сами, обратитесь к разработчику на фрилансе, думаю за 500р вам сделают.

      • Владимир:

        Миша приветствую, есть одна проблема, может ты сможешь помочь а то Гугол выдает не то. В общем я недавно установил на сайт плагин DW Question Answer, он нечто на подобии вопросов/ответов и оказалось что в его текстовом редакторе не работает загрузчик медиафайлов, все бы ничего но этот злосчастный загрузчик не работает и на других плагинах, КонтактФорм 7 и еще на одном который я использую для бесплатных объявлений на сайте, в общем нигде не работает, проверил. Я отключал все плагины и скрипты и по очереди подключал, думал где то конфликт но результат это не дало, ошибку я так и не обнаружил. Миша если ты сталкивался с подобной проблемой помоги пожалуйста или посоветуй к кому обратиться. Заранее благодарю.

        • Миша:

          Приветствую!
          А помимо отключения плагинов тему меняли на стандартную?

          • Владимир:

            Здравствуй Миша, спасибо за ответ. Тему я не менял потому что на тестовом сайте все работает, открывается библиотека с фотографиями и я могу загружать их оттуда или с компа. Не знаю можно ли сюда вставлять адрес сайта но я сейчас скину, может так лучше сможешь понять проблему, правда у тебя значок загрузки медиафайлов наверное пропадет, у меня он находится слева над текстовым полем.
            Вот адрес страницы: http://zakarpat-tour.com/dobavit-obyavlenie Посмотри пожалуйста возможно ты как профи быстрее увидишь ошибку.

            • Егор:

              А может с хостингом что? По моему где-то встречал такую неприятность.

            • Миша:

              О, тупанул, мне показалось, вы про админку.

              Если вы говорите, что на тестовом всё ок, тут нужно просто открыть исходный HTML обоих сайтов и сравнить, что не так.

              • Владимир:

                Приветствую Миша, для этого редактора я создал отдельный файл так как буду устанавливать еще один для других целей когда этот заработает нормально. Я его устанавливал и на базовом шаблоне, думал что проблема в файле, оба файлы и базовый и созданный отдельно идентичны, просто у этого что с редактором, свои стили. Не могу никак понять в чем причина, почему так происходит, уже несколько раз все перелопатил, может где то что то не так настроил в Вордпрессе, хотя проверял, вроде все нормально, может в стилях что то не так, хотя и здесь не уверен.

              • Владимир:

                Извини Миша что гружу тебя, есть еще одна деталька, в настройках плагина есть выбор форматирования текста, простой текст, ХТМЛ и еще что то, так вот, если я переключаю на ХТМЛ то под иконкой загрузчика и над текстовым полем появляется рамка, но пустая. На текстовом сайте в том месте появляются иконки форматирования текста.

  • Александр:

    🙂 Всё ясно! Вопрос закрыт! Больше не побеспокою! Удачи! 🙂

  • Егор:

    А что, прикольно часа 2-3 в коде чужом за бесплатно копаться, сайдбары выводить? Как думаешь, Александр?

  • Андрей:

    Вопрос: у меня на сайте есть страницы, рубрики (со списком постов), и посты - так вот сайдбар можно вывести везде, кроме рубрик - это особенности моей темы или в вордпрессе так продумано, что именно в рубрике со списком постов нельзя выводить сайдбар?

  • Алексей:

    Добрый ночи, Михаил.
    Отличная статья и практически все получилось за исключением вывода сайдбара в нужном месте... Почитал комментарии, подобный вопрос был у Сплетницы, но как понял он так и не решился. Суть проблемы - есть шаблон с правым сайдбаром, с помощью вашей статьи подключил, вывел сайдбар, настроил стили, но он выводится правее правого сайдбара, а должен быть слева.... Егор в той дискуссии советовал назначить класс

    .uour-classe{
        float: left;
    }

    не помогает.... класс, конечно прописал свой...
    Буду благодарен за помощь.

    • Миша:

      Доброй ночи!
      Если я правильно понимаю, у вас уже есть сайдбар справа и нужно добавить еще один слева.

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

      Какие сайты подходят, а какие нет? В основном это касается адаптивных сайтов с резиновой версткой.

      А вообще эта задача состоит из двух частей:

      1. Определить точное место, куда в коде нужно добавить сайдбар и соответственно добавить его туда.
      2. Исправить то, что получилось в CSS.
      • Владимир:

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

  • Егор:

    Здравствуй, Миша. Блин, популярная статья, пока прокрутил вниз... 🙂 У тебя сверху, где мета, под названием статьи, две даты выскочило.

    И вопрос, правда не по теме, ты сайты делаешь на фреймворке, или свой используешь? Просто я посмотрел фреймворки, там лишних функций много.

  • Егор:

    Просто в Opera криво смотрится. Я бы скрин скинул, некуда

  • Егор:

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

  • Егор:

    Миша, не подскажешь как к ссылкам в сайдбаре добавить микроразметку itemprop="url" ?
    Я фильтром хотел, но что-то пошло не так.

    function widget($content) {
    $pattern = "<a ";
    $replacement = '<a itemprop="url"';
    $content = str_replace($pattern, $replacement, $content);
    return $content;
    }
    add_filter('dynamic_sidebar', 'widget');

    Подскажи пожалуйста.

  • Егор:

    Вот скрин, Миша. Или так и задумывалось? https://yadi.sk/i/rR63dF70koM6W

  • Артём:

    Здравствуйте. У меня боковая колонка отображается не сбоку а сверху. Я сделал всё как написано, но я так понимаю что-то не так в моей теме. Не подскажите что это может быть? Сайт http://ukronews.ru/ на главной странице всё нормально, проблема в том что когда заходишь на какую-нибудь новость то сайдбара нет, а если я его устанавливаю, то он отображается вверху страницы.

  • Егор:

    Здравствуй, Миша. Сейчас в WordPress 4.4 новая функция появилась

    is_registered_sidebar()

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

    if ( is_active_sidebar( ) )

    устаревшей.

    Как в виджетах функция Wp_widget

  • Максим:

    Здравствуйте, Михаил. Подскажите, пожалуйста, может ли быть в теме заблокировано отображение сайдбара? Просмотрел кучу статей, опробовал все предложенные варианты и Ваш в том числе. Но сайдбар никак не хочет отображаться на сайте. Что можете посоветовать? Спасибо!

    • Миша:

      Здравствуйте,

      расскажите по порядку, что вы делаете.

      • Максим:

        1. В functions.php вставил код
        function true_register_wp_sidebars() {

        /* В боковой колонке - первый сайдбар */
        register_sidebar(
        array(
        'id' => 'true_side', // уникальный id
        'name' => 'Боковая колонка', // название сайдбара
        'description' => 'Перетащите сюда виджеты, чтобы добавить их в сайдбар.', // описание
        'before_widget' => '', // по умолчанию виджеты выводятся -списком
        'after_widget' => '',
        'before_title' => '', // по умолчанию заголовки виджетов в
        'after_title' => ''
        )
        );

        /* В подвале - второй сайдбар */
        register_sidebar(
        array(
        'id' => 'true_foot',
        'name' => 'Футер',
        'description' => 'Перетащите сюда виджеты, чтобы добавить их в футер.',
        'before_widget' => '',
        'after_widget' => '',
        'before_title' => '',
        'after_title' => ''
        )
        );
        }

        add_action( 'widgets_init', 'true_register_wp_sidebars' );

        2. В sidebar.php удалил весь код и втавил

        <?php if ( is_active_sidebar( 'true_side' ) ) : ?>
         
        	<div id="true-side" class="sidebar">
         
        		<?php dynamic_sidebar( 'true_side' ); ?>
         
        	</div>
         
        <?php endif; ?>

        3. В админке появился пункт Виджеты, зашел в него добавил необходимые виджеты, но на сайте они не отображаются.

  • Сергей:

    Здравствуйте.
    Я вот уже давно бьюсь над тем как в сайдбаре выводить произвольные поля.
    И еще этот сайдбар выводить не в начале статьи а где-нибудь в середине.
    Может Вы подскажете?

  • Сергей:

    Здравствуйте, Миша.
    Спасибо, что отзвались.
    Проблема в том что произвольные поля В СЕРЕДИНЕ ПОСТА не выводятся.
    То есть если насовать коды в header.php то все работает, но нужно выводить именно где-то между абзацами текста.
    Ведь не очень красиво когда шапка поста забита фотками, картами, кнопками, а дальше идет большой текст практически голый.

    Поэтому в статье в нужных местах мне нужно выводить код Адсенса, кнопки, фотки и другие произвольные поля.
    Например один шорткод выводит адсенс, другой - 3-4 кнопки со ссылками разными для каждой страницы + фото или спутниковую карту.
    Например в статье про Москву кнопка "карта" выведет карту Москвы, а в посте про Питер такая же на вид кнопка выведет карту Питера.

    Почему не вставить код прямо в страницу? Во-первых громоздко.
    Во-вторых, код кнопок при редактировании страницы и переходе из текстового режима в визуальный исчезает.
    Пример кода - <a href="http://sait.ru/karta-barselony/"> </a>
    Кроме того сли вставить где-нибудь между абзацами текста ID, 'karta', true); ?> то произвольное поле тоже

    не выведется. Кстати если его вставить в виджет - тоже.

    Задумал я сделать так - весь код произвольных полей (штук 5)с классами, размерами полей и т.д. забросить в отдельный файл (например

    pole.php).
    вставляю в статье где нужно шорткоды (2-3 штуки), шорткоды выводят содержимое pole.php т.е. произвольные поля.
    А в "значении" каждого произвольного поля в каждом посте вписываю типа a href="h t t p://sait.ru/avto/" class="karta" и т.п.

    Что я сделал.

    В functions.php вставил код

    function barbor() {    
       $file = file_get_contents('pole.php', true); 
       return  $file;    
    }    
    add_shortcode( 'ch-s', 'barbor' );

    И в шаблон закинул файл pole.php
    Если в этот файл вставить код Адсенса, то он отлично выводится шорткодом [ch-s]

    А вот как вывести произвольные поля?
    Вставленный в pole.php код ID, 'pole_1', true); ?> не канает.

    Дали мне совет, что надо сперва прочитать содержимое файла pole.php в переменную при помощи какой-нибудь php функции, а затем выводить

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

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

    Такая вот задача...

  • Сергей:

    В прошлом сообщении из текста исчезла часть кода вывода произвольных полей

    <?php echo get_post_meta($post->ID, 'fotka', true); ?>
  • Сергей:

    А как его использовать? Можете привести пример?

  • Алексей:

    Михайл, подскажите пожалуйста как разместить два разных сайдбара друг под другом?
    Вожусь очень долго уже, никак не выходит. Цель: выводить второй сайдбар не везде.
    Первый подключен так:

    Functions php:

    register_sidebar(array(
    'name' => 'Sidebar',
    'id' => 'Sidebar',
    )
    );

    single php:

    <?php get_sidebar(); ?>
  • Алексей:

    Михаил, спасибо за отклик!
    Я думаю из-за особенностей моего шаблона, в админке оба сайдбара видны только если подключаю их так:
    functions.php

    register_sidebar(
    array(
                      'name' => 'Sidebar',
                      'id' => 'Sidebar',
       )
    ); 
    	register_sidebar(
    array(
                      'name' => 'Sidebar-Extra',
                      'id' => 'Sidebar-extra',
       )
    );

    а вот дальше проблема, оба удалось вывести только так:
    single.php

    <?php 
    	get_sidebar( 'Sidebar' ); 
            dynamic_sidebar( 'Sidebar-extra' ); 
    ?>

    но тут, основной отображается на положенном месте, а вот дополнительный только над основным контентом... вордпресс не видит id=sidebar-extra
    сдается мне нужно колдовать с sidebar.php
    Спасибо за идею, колдую дальше.

  • Алексей:

    или может создавать отдельный файл sidebar-extra.php?

  • Денис:

    Здравствуйте Миша. Я совсем ещё чайник, создал сайт на вордпрес попытался зарегистрировать сайдбар вставил код в functions.php , но у меня появился белый экран с ошибкой (Parse error: syntax error, unexpected '<' in /home/p349003/www/links27.ru/wp-content/themes/responsive/functions.php on line 44) и теперь я не могу зайти на сайт. В чём может быть проблема и как её решить? Спасибо.

  • Тимофей:

    Добрый день.
    Как отключить сайдбар для форума bbpress? Область форума получается слишком узкой, поэтому требуется отключить сайтбар и растянуть форум с помощью css. Дело в том, что форум выводится не как страница и обычным методом отключения сайдбара на определенной странице - не получится.
    Заранее благодарен за ответ.

  • Bkmz:

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

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

phpjsHTMLCSSSQLПросто код
  Комментарии закрыты.