WordPress как на ладони
wordpress jino

get_sidebar() WP 1.5.0

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

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

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

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

<?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();

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

<?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вязанные функции

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

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

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

    Ответить3.9 года назад #
    • Kama4660

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

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

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

    -1
    Ответить3.6 года назад #
    • Kama4660

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

      Ответить3.6 года назад #
      • brigadir cайт: csg.technology @

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

        Ответить3.6 года назад #
        • Kama4660

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

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

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

            Ответить3.5 года назад #
  • Андрей

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

    Ответить1.4 года назад #
    • Kama4660

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

      Ответить1.4 года назад #
  • Денис @

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

    Ответить1.2 года назад #
    • campusboy1946 cайт: www.youtube.com/c/wpplus

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

      Ответить1.1 года назад #
    • Kama4660

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

      // Подключит файл '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
      Ответить1.1 года назад #
      • campusboy1946 cайт: www.youtube.com/c/wpplus

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

        do_action( 'get_sidebar', $name );

        И почему не:

        get_template_part('inc/sidebar');
        Ответить1.1 года назад #
        • Kama4660

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

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

          1
          Ответить1.1 года назад #

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

Ваш комментарий