wp_get_sidebars_widgets()
Отримує список усіх сайдбарів (панелей віджетів) та список усіх віджетів у цих сайдбарах.
Використовує глобальні змінні $_wp_sidebars_widgets , $sidebars_widgets
Використовує опцію sidebars_widgets
(дуже швидко) | 50000 разів – 3.69 сек
(швидко) |
PHP 7.1.1, WP 4.7.2
Хуки з функції
Повертає
Массив. Асоціативний масив, де в ключі знаходиться ID панелі віджетів (сайдабар), а значення масив з усіма віджетами з кожної панелі, включаючи панель з неактивними віджетами.
Використання
wp_get_sidebars_widgets( $deprecated = true );
- $deprecated
(логічний) - Не використовується. Параметр скасовано.
Типово: true
Приклади
#1 Що повертає функція
$wg = wp_get_sidebars_widgets(); /* $wg Array ( [wp_inactive_widgets] => Array ( [0] => text-8 [1] => text-5 ) [sidebar] => Array ( [0] => democracy-2 [0] => text-1 ) ) */
#2 Порахуємо кількість віджетів у сайдбарі
Допустимо, нам потрібно зробити щось залежно від того, скільки віджетів знаходиться в панелі. Наприклад, є горизонтальний сайдбар, до якого можна додати довільну кількість віджетів. Потрібно залежно від їхньої кількості кожному з них встановлювати різний css клас.
Наприклад, якщо віджет у сайдбарі один, то col-lg-12 . Якщо два – то col-lg-6 .
Для цього дізнаємося назву потрібного сайдбара, допусти воно sidebar_horizontal .
$wg = wp_get_sidebars_widgets();
$ myid = 'sidebar_horizontal';
// потрібний нам сайдбар існує
if( isset($wg['sidebar_horizontal']) ){
$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');
нотатки
- Global. Масив. $_wp_sidebars_widgets
- Global. Масив. $sidebars_widgets
список змін
| З версії 2.2.0 | Введено. |