我在子主题的粘贴箱中具有以下功能:
http://pastebin.com/uzjmXiyN
此函数创建一个下拉框,从中可以选择用于特定页面的侧栏。出了很多汗,一切都很好。我唯一的问题是
$wp\\u registered\\u侧栏
以下代码段中的函数
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\\u widget\\u区域
大堆如果我更换
$wp\\u registered\\u侧栏
具有
$dynamic\\u widget\\u区域
我发现以下错误:
注意:未定义变量:dynamic\\u widget\\u area。。。等
和
警告:为foreach()提供的参数无效。。。等
仅显示某些侧栏的正确方式是什么。
最合适的回答,由SO网友:s_ha_dum 整理而成
这是一个普通的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>";