WP_GET_SIDEBARS_WIDGETS(): Получение списка боковых панелей и виджетовWordPress 2.2.0

WP_GET_SIDEBARS_WIDGETS() │ WP 2.2.0

Функция wp_get_sidebars_widgets() позволяет получить полный список боковых панелей (сайдбаров) и идентификаторов виджетов, которые в них находятся.

Эта функция обновляет список виджетов боковой панели, если это необходимо, и также сохраняет обновленный список.

Важно: Это внутренняя функция, предназначенная для использования только в ядре WordPress. Рекомендуется не использовать её в своём коде.


Использование функции

Определение функции

wp_get_sidebars_widgets( $deprecated );

Параметры:

  • $deprecated (true|false) — параметр устарел и не используется.
    • Значение по умолчанию: true

Пример использования

$wg = wp_get_sidebars_widgets();

Возвращаемое значение

Функция возвращает массив. При вызове из админки, возвращается обновленный список виджетов в формате версии 3.

Пример 1: Что возвращает функция

$wg = wp_get_sidebars_widgets();

/* $wg
Array
(
    [wp_inactive_widgets] => Array
        (
            [0] => text-8
            [1] => text-5
        )

    [sidebar] => Array
        (
            [0] => democracy-2
            [1] => text-1
        )

)
*/

Пример 2: Подсчет количества виджетов в боковой панели

Предположим, что нам нужно что-то сделать в зависимости от того, сколько виджетов в панели. Например, в горизонтальной боковой панели можно добавить разное количество виджетов. Нам нужно установить разные CSS классы для каждого в зависимости от их количества.

Если в боковой панели один виджет, то класс будет col-lg-12. Если два — col-lg-6.

Для этого определим имя нужной боковой панели, например, sidebar_horizontal.

$wg = wp_get_sidebars_widgets();
$myid = 'sidebar_horizontal';

// Проверяем, существует ли нужная боковая панель
if (isset($wg[$myid])) {
    $wgcount = count($wg[$myid]);

    $class = 'col-lg-12';

    if ($wgcount == 2) {
        $class = 'col-lg-6';
    } elseif ($wgcount == 3) {
        $class = 'col-lg-4';
    } elseif ($wgcount == 4) {
        $class = 'col-lg-3';
    }

    // Применяем класс с помощью хука
    add_filter('dynamic_sidebar_params', function($param) use($class) {
        foreach ($param as &$data) {
            if ($data['id'] == $myid) {
                $data['before_widget'] = str_replace('class="', 'class="' . $class . ' ', $data['before_widget']);
            }
        }
        return $param;
    });
}

// отобразить виджеты
dynamic_sidebar('sidebar');

Важные заметки

  • Глобальная переменная: $_wp_sidebars_widgets
  • Глобальная переменная: $sidebars_widgets

Изменения

  • С версии 2.2.0 функция была введена.

Связанные функции

  • dynamic_sidebar() — отображает виджеты в боковой панели.
  • is_active_sidebar() — проверяет, активна ли боковая панель.
  • is_active_widget() — проверяет, активен ли виджет.
  • register_sidebar() — регистрирует боковую панель.
  • register_widget() — регистрирует виджет.

Эти функции помогут вам управлять боковыми панелями и виджетами на вашем сайте WordPress более эффективно.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *