Функция возвращает true
, если у сайдбара есть виджеты, false
, если у сайдбара нет виджетов (либо если сайдбара не существует вообще), а также выводит содержимое сайдбара на сайте (в том месте, где была использована).
dynamic_sidebar($index = 1)
- $index
- (целое число|строка) ID сайдбара, который нужно вывести, либо его порядковый номер. Если в качестве аргумента передано целое число
$index
, то функция будет пытаться вывести сайдбар с IDsidebar-$index
. По умолчанию выводит сайдбар с порядковым номером 1, то есть с IDsidebar-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);