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

get_sidebar()WP 1.5.0

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

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

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

Возвращает

null|false. null при удачном подключении файла, false если файла шаблона не существует.

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

<?php get_sidebar( $name, $args ); ?>
$name(строка)
Индекс названия файла. Будет подключен файл sidebar-{name}.php
По умолчанию: null
$args(массив) (С WP 5.5)
Дополнительные параметры для подключаемого файла. Используйте переменную $args в подключаемом файле.
По умолчанию: array()

Примеры

1

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

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

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

1

#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 Введена.
С версии 5.5.0 A return value was added.
С версии 5.5.0 The $args parameter was added.

Код get_sidebar() WP 6.5.2

function get_sidebar( $name = null, $args = array() ) {
	/**
	 * Fires before the sidebar template file is loaded.
	 *
	 * @since 2.2.0
	 * @since 2.8.0 The `$name` parameter was added.
	 * @since 5.5.0 The `$args` parameter was added.
	 *
	 * @param string|null $name Name of the specific sidebar file to use. Null for the default sidebar.
	 * @param array       $args Additional arguments passed to the sidebar template.
	 */
	do_action( 'get_sidebar', $name, $args );

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

	$templates[] = 'sidebar.php';

	if ( ! locate_template( $templates, true, true, $args ) ) {
		return false;
	}
}
14 комментариев
    Войти