Функция dynamic_sidebar()
в WordPress используется для вывода динамических панелей виджетов (сайдбаров). В зависимости от переданного параметра, она выводит либо определённую панель, либо панель по умолчанию, если аргумент не был указан.
dynamic_sidebar( int|string $index = 1 ): bool
- $index (необязательный): индекс, имя или ID панели. По умолчанию
1
. - Возвращаемое значение:
true
, если панель была найдена и отображена;false
, если панели нет или она пустая.
Описание
Функция выводит первую активную панель виджетов, то есть ту, в которой есть хотя бы один виджет. Если на сайте зарегистрировано несколько панелей, вы можете указать ID или имя конкретной панели, которую нужно вывести. Если ничего не указано, WordPress по умолчанию выводит панель с ID sidebar-1
.
Пример 1: Вывод определённой панели виджетов
Если на сайте зарегистрированы несколько панелей виджетов, вы можете использовать параметр $index
для вывода нужной панели. Например, для вывода панели с ID right-sidebar
, используйте следующий код:
<ul id="sidebar">
<?php dynamic_sidebar( 'right-sidebar' ); ?>
</ul>
Пример 2: Проверка наличия панели перед выводом
Чтобы избежать вывода пустой панели, можно сначала проверить, активна ли она с помощью функции is_active_sidebar()
:
<?php if ( is_active_sidebar( 'left-sidebar' ) ) : ?>
<ul id="sidebar">
<?php dynamic_sidebar( 'left-sidebar' ); ?>
</ul>
<?php endif; ?>
В этом примере, панель left-sidebar
будет выведена только если в ней есть активные виджеты.
Пример 3: Вывод панели с обработкой пустого сайдбара
В случае, если панель пустая или не существует, вы можете задать альтернативный контент, который будет отображаться. Это делается с помощью конструкции if
:
<ul id="sidebar">
<?php if ( ! dynamic_sidebar( 'footer-sidebar' ) ) : ?>
<li>Статический элемент 1</li>
<li>Статический элемент 2</li>
<?php endif; ?>
</ul>
В данном случае, если панель с ID footer-sidebar
не будет найдена или окажется пустой, вместо неё будут выведены два статических элемента.
Пример 4: Множественные сайдбары
Если на сайте несколько панелей виджетов, при их регистрации можно указывать уникальные ID и имена. Это облегчает их дальнейшее использование в шаблоне:
register_sidebar( array(
'id' => 'header-widget',
'name' => __( 'Header Widget Area', 'your-text-domain' ),
'description' => __( 'Панель виджетов в шапке сайта', 'your-text-domain' ),
) );
dynamic_sidebar( 'header-widget' );
В этом примере регистрируется панель с ID header-widget
, и она выводится с помощью функции dynamic_sidebar()
.
Заключение
Функция dynamic_sidebar()
— мощный инструмент для вывода панелей виджетов в WordPress. Она позволяет легко управлять содержимым сайдбаров через админку, избегая ручного редактирования шаблонов. Обязательно проверяйте наличие активных виджетов перед их выводом, чтобы избежать пустых блоков на странице.