dynamic_sidebar() — выводит сайдбар

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Функция возвращает true, если у сайдбара есть виджеты, false, если у сайдбара нет виджетов (либо если сайдбара не существует вообще), а также выводит содержимое сайдбара на сайте (в том месте, где была использована).

dynamic_sidebar($index = 1)
$index
(целое число|строка) ID сайдбара, который нужно вывести, либо его порядковый номер. Если в качестве аргумента передано целое число $index, то функция будет пытаться вывести сайдбар с ID sidebar-$index. По умолчанию выводит сайдбар с порядковым номером 1, то есть с ID sidebar-1.
В качестве значения этого параметра также можно использовать название сайдбара, но лучше используйте ID.

Пример 1. Просто выводим сайдбар.

Так как по умолчанию в WordPress виджеты заключаются в тег <li>, то сам блок с сайдбаром будет <ul>:

<ul id="sidebar">
	<?php dynamic_sidebar() ?>
</ul>

Пример 2. Выводим сайдбар с указанным ID

Допустим это будет левый сайдбар с ID left-sidebar, который был указан в функции register_sidebar() при регистрации. Такой вариант наиболее удобен, особенно если у вас на сайте зайдействовано несколько сайдбаров.

<ul id="leftbar">
	<?php dynamic_sidebar('left-sidebar') ?>
</ul>

Пример 3. Условие

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

<ul id="sidebar">
	<?php 
		if ( ! dynamic_sidebar( 'my-sidebar' ) ) : // если true, то выведет содержимое сайдбара
			// код по умолчанию, будет выполняться, если сайдбара не существует или если он без виджетов
		endif;
	?>
</ul>

Фильтр dynamic_sidebar_has_widgets

Позволяет повлиять на возвращаемое логическое значение функции для какого-либо конкретного сайдбара с указанным ID.

apply_filters( 'dynamic_sidebar_has_widgets', $did_one, $index );
$did_one
(логическое) возвращаемое значение функции — false или true,
$index
(строка) ID сайдбара;

Пусть для сайдбара с ID sidebar-1 функция dynamic_sidebar() всегда возвращает true. Однако обратите внимание, что это никак не повлияет на то, будет выведен сайдбар или нет.

function true_return_true_4_sidebar_1( $did_one, $index ){
	if( $index == 'sidebar-1' ){
		return true;
	}
}
 
add_filter( 'dynamic_sidebar_has_widgets', 'true_return_true_4_sidebar_1', 10, 2);
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии