Я перечисляю все такие боковые панели:
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 вообще не помогает.
Спасибо!
<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()
только для отображения ее точно так же, как вы просили. Не уверен, что вы действительно этого хотите.
Во всяком случае: ваш Q в основном касается доступа к массивам. Я написал об этом (для дальнейшего объяснения). Пожалуйста, взгляните сюда.
Напишите функцию для создания списка для вас?
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 );
Надеюсь, это поможет.