WordPress как на ладони
Мощный и не дорогой хостинг от Fornex.com

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 VER 5.0.1

<?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 комментов
  • Вадим

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

    Ответить4.9 года назад #
    • Kama7144

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

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

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

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

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

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

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

        Ответить4.6 года назад #
        • Kama7144

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

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

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

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

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

    Ответить2.5 года назад #
    • Kama7144

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

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

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

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

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

      Ответить2.2 года назад #
    • Kama7144

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

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

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

        do_action( 'get_sidebar', $name );

        И почему не:

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

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

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

          1
          Ответить2.2 года назад #
Здравствуйте, !     Войти . Зарегистрироваться