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

Функция возвращает 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);

Источник: misha.blog

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: