WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

get_sidebar() WP 1.5.0

Подключает файл шаблона sidebar.php (сайдбар). Если передан параметр $name, то будет подключен файл sidebar-{name}.php.

Если файл не найден в шаблоне темы, то будет взять файл по умолчанию: wp-includes/theme-compat/sidebar.php

Работает на основе: locate_template()
Хуки из функции
Возвращает

Ничего (null).

Использование

<?php get_sidebar( $name ); ?>
$name(строка)
Индекс названия файла. Будет подключен файл sidebar-{name}.php
По умолчанию: нет

Примеры

#1. Две боковые панели (сайдбара) в одной теме

<?php get_header(); ?>
<?php get_sidebar('left'); ?>
<?php get_sidebar('right'); ?>
<?php get_footer(); ?>

В теме (шаблоне) должны присутствовать файлы sidebar-right.php и sidebar-left.php.

#2. Подключение сайдбара из подпапки темы

Чтобы это сделать нужно написать свой простой аналог этой функции:

// Подключит файл 'inc/sidebar.php' из папки текущей темы. 
// Размещать в functions.php
function theme_sidebar( $name = '' ){
	do_action( 'get_sidebar', $name );

	if( $name )
		$name = "-$name";

	locate_template( "inc/sidebar$name.php", true );
}

// вызов вместо get_sidebar()
theme_sidebar();

Список изменений

С версии 1.5.0 Введена.

Код get sidebar: wp-includes/general-template.php WP 5.3

<?php
function get_sidebar( $name = null ) {
	/**
	 * Fires before the sidebar template file is loaded.
	 *
	 * @since 2.2.0
	 * @since 2.8.0 $name parameter added.
	 *
	 * @param string|null $name Name of the specific sidebar file to use. null for the default sidebar.
	 */
	do_action( 'get_sidebar', $name );

	$templates = array();
	$name      = (string) $name;
	if ( '' !== $name ) {
		$templates[] = "sidebar-{$name}.php";
	}

	$templates[] = 'sidebar.php';

	locate_template( $templates, true );
}

Cвязанные функции

Из раздела: Подключение файлов темы

Еще из тегов шаблона: Основные

14 комментов
  • Вадим

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

    Ответить21.Дек.2013 в 19:42 #
    • Kama7641

      Для вылавливания изменения размера браузера, в css используйте:

      /* для размеров экрана меньше 900px */
      @media only screen and (max-width:900px){
      	/* Тут меняете стили, чтобы было как нужно вам */
      	#sidebar {
      		float:none;
      		width:100%;
      	}
      }
      4
      Ответить21.Дек.2013 в 22:17 #
  • @ brigadir csg.technology

    Нужно, чтобы, в зависимости от присутствия определённой метки записи, в сайдбаре и в самой записи отображался объект. В данном случае — картинка. Как это реализовать?

    -1
    Ответить24.Мар.2014 в 00:17 #
    • Kama7641

      Вам условный тег is_tag() нужен.

      Ответить24.Мар.2014 в 01:08 #
      • @ brigadir csg.technology

        Можно примером? Про PHP я знаю только то, как безболезненно вставить один код в другой, не попортив вёрстку.

        Ответить24.Мар.2014 в 01:26 #
        • Kama7641

          Я неправильно понял вопрос. Вам нужно проверить есть ли у поста конкретная метка, скажем с ID 30 и вывести объект, если эта метка есть. Делается это так:

          <?php 
          $the_id = 30;
          $tags = wp_get_post_tags( $post->ID, 'fields=ids' );
          if( in_array($the_id, $tags) ){
          	?>
          	У поста есть метка 30. Выводим объект. Тут объект.
          	<?php
          }
          ?>
          Ответить25.Мар.2014 в 19:17 #
          • @ brigadir csg.technology

            Ну примерно. А вообще, решил всё плагом Widget Logic.

            Ответить25.Мар.2014 в 19:49 #
  • Андрей

    Можно ли отключить sidebar в зависимости от width сайта? решение через display:none не подходит

    Ответить04.Июн.2016 в 15:34 #
    • Kama7641

      Отключить пожалуй нельзя - php не работает с бразуером, он на сервере работает... Но спрятать можно через css - @media (max-width:800px){}

      Ответить05.Июн.2016 в 10:00 #
  • @ Денис

    Здравствуйте! Подскажите, как перенести файл sidebar.php в отдельную папку и подключить его оттуда или его надо постоянно держать в корне темы?

    Ответить13.Авг.2016 в 19:30 #
    • campusboy3434 www.youtube.com/c/wpplus

      Привет. Эта функция работает только так, да. Но никто не мешает написать свою, которая будет брать из любой папки.

      Ответить03.Сен.2016 в 17:27 #
    • Kama7641

      Вот так его подключай:

      // Подключит файл 'inc/sidebar.php' из папки текущей темы. 
      // Размещать в functions.php
      function theme_sidebar( $name = '' ){
      	do_action( 'get_sidebar', $name );
      
      	if( $name )
      		$name = "-$name";
      
      	locate_template("inc/sidebar$name.php", true);
      }
      
      // вызов вместо get_sidebar()
      theme_sidebar();
      1
      Ответить04.Сен.2016 в 01:18 #
      • campusboy3434 www.youtube.com/c/wpplus

        Для чего нужен:

        do_action( 'get_sidebar', $name );

        И почему не:

        get_template_part('inc/sidebar');
        Ответить04.Сен.2016 в 01:21 #
        • Kama7641

          Хук нужен, потому что на него иногда цепляются плагины...

          get_template_part('inc/sidebar'); тоже можно. В принципе, тоже самое, но если заменять сайдбар, то лучше включить этот хук, мало ли. Если это не важно, можно использовать get_template_part - разницы нет тут...

          1
          Ответить04.Сен.2016 в 01:27 #
Здравствуйте, !     Войти . Зарегистрироваться