Получить конкретные боковые панели $ wp_registered_sidebars

У меня есть следующие функции, как в этом pastebin в дочерней теме:

http://pastebin.com/uzjmXiyN

Эти функции создают раскрывающееся окно, в котором вы можете выбрать боковую панель для использования на определенной странице. Все хорошо работает после большого пота. Моя единственная проблема – это

$ wp_registered_sidebars

функции в следующем фрагменте кода

foreach($wp_registered_sidebars as $sidebar_id => $sidebar) { $output .= "<option"; if($sidebar_id == $val) $output .= " selected='selected'"; $output .= " value='".$sidebar_id."'>".$sidebar['name']."</option>"; } $output .= "</select>"; echo $output; 

В этой функции перечислены все доступные боковые панели темы, и этого я не хочу. Я хочу, чтобы в раскрывающемся списке отображались боковые панели в

$ dynamic_widget_areas

массив. Если я заменю

$ wp_registered_sidebars

с

$ dynamic_widget_areas

Я получаю следующие ошибки:

Примечание. Неопределенная переменная: dynamic_widget_area … и т. Д.

а также

Предупреждение: неверный аргумент для foreach () … и т. Д.

Каков правильный способ отображения только определенных боковых панелей.

Solutions Collecting From Web of "Получить конкретные боковые панели $ wp_registered_sidebars"

Это общий вопрос PHP. Вам нужно проверить, установлен ли ключ $sidebar_id в $dynamic_widget_areas при прохождении цикла. Это доказательство кода концепции должно дать вам эту идею.

 $dynamic_widget_areas = array( 'sidebar-1' => 'stuff', ); global $wp_registered_sidebars; $output = ''; foreach($wp_registered_sidebars as $sidebar_id => $sidebar) { $output .= "<option"; if(isset($dynamic_widget_areas[$sidebar_id])) { if($sidebar_id == $val) { $output .= " selected='selected'"; } $output .= " value='".$sidebar_id."'>".$sidebar['name']."</option>"; } } $output .= "</select>";