问题描述
我列出所有这样的侧边栏:
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 主要是关于如何访问数组。我写了一个关于这个问题 (进一步的解释) 。 Please take a look over here.
次佳解决方案
写一个函数为你创建列表?
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 );
希望有帮助。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。