Список всех названий боковых панелей (сайдбаров)?
30 мар. 2011 г., 02:00:16
Просмотры: 18.1K
Голосов: 16
Я вывожу список всех сайдбаров следующим образом:
global $wp_registered_sidebars;
echo '<pre>';
print_r($wp_registered_sidebars);
echo '</pre>'
И получаю примерно такой результат:
Array
(
[sidebar-1] => Array
(
[name] => Sidebar #1
[id] => sidebar-1
[description] => Sidebar number 1
[before_widget] =>
[after_widget] =>
[before_title] =>
[after_title] =>
)
(...)
)
Но я хотел бы отобразить их в виде выпадающего списка:
<select>
<option value ="SIDEBAR-ID">SIDEBAR-NAME</option>
<option value ="SIDEBAR-ID">SIDEBAR-NAME</option>
(...)
</select>
В WordPress Codex нет полезной информации по этому поводу.
Спасибо!

Wordpressor
5.05K
Комментарии
Все ответы на вопрос
2
0
Перебор глобального массива:
<select>
<?php foreach ( $GLOBALS['wp_registered_sidebars'] as $sidebar ) { ?>
<option value="<?php echo ucwords( $sidebar['id'] ); ?>">
<?php echo ucwords( $sidebar['name'] ); ?>
</option>
<?php } ?>
</select>
Примечание:
Функция ucwords()
здесь только для того, чтобы отобразить данные именно так, как вы просили. Не уверен, что вам действительно это нужно.
Как получить доступ к глобальным массивам и объектам:
В любом случае: Ваш вопрос в основном о доступе к массивам. Я написал вопрос об этом (для более подробного объяснения). Пожалуйста, посмотрите здесь.

kaiser
50.8K
30 мар. 2011 г. 02:37:25
0
Написать функцию для создания списка?
function sidebar_selectbox( $name = '', $current_value = false ) {
global $wp_registered_sidebars;
if ( empty( $wp_registered_sidebars ) )
return;
$name = empty( $name ) ? false : ' name="' . esc_attr( $name ) . '"';
$current = $current_value ? esc_attr( $current_value ) : false;
$selected = '';
?>
<select<?php echo $name; ?>>
<?php foreach ( $wp_registered_sidebars as $sidebar ) : ?>
<?php
if ( $current )
$selected = selected( $current === $sidebar['id'], true, false ); ?>
<option value="<?php echo $sidebar['id']; ?>"<?php echo $selected; ?>><?php echo $sidebar['name']; ?></option>
<?php endforeach; ?>
</select>
<?php
}
Затем просто вызовите её там, где нужно создать выпадающий список с сайдбарами, при необходимости передав имя, например:
sidebar_selectbox();
или
sidebar_selectbox( 'theme_sidebars' );
Дополнительно можно передать текущее выбранное значение...
sidebar_selectbox( 'theme_sidebars', $var_holding_current );
Надеюсь, это поможет.

t31os
18.7K
30 мар. 2011 г. 02:44:17
Похожие вопросы
2
ответов
2
ответов