List all sidebar names?

时间:2011-03-29 作者:Wordpressor

我列出了所有这样的侧边栏:

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一点帮助都没有。

非常感谢。

2 个回复
最合适的回答,由SO网友:kaiser 整理而成

通过全局循环:

<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() 函数仅用于按照您的要求精确显示它。不确定你是否真的想要那样。

如何访问全局数组和对象:无论如何:您的问题主要是关于如何访问数组。我写了一个问题(为了进一步解释)。Please take a look over here.

SO网友:t31os

编写一个函数为您创建列表?

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 );
希望这有帮助。

结束

相关推荐

Paging in a sidebar mini loop

我切换到了另一个主题,并决定用其中的一些默认代码制作一个小部件,在自定义循环中显示我的美味帖子、推特帖子、su帖子和youtube视频(不包括主循环中的这些类别)。但是现在。。。分页不再工作。我制作了这个小部件:// =============================== EDL Sidebar Posts Widget ====================================== class SidebarPosts extends WP_Widget { &#x