在下面的脚本(位于自定义小部件中)中,我试图确定小部件已添加到哪个侧栏区域,因为我想根据用户已将小部件添加到哪个侧栏来更改默认文本。编辑小部件时,此代码应仅在管理端执行。
然而,无论小部件放在哪个侧栏中(我的主题有4个主侧栏、页眉、页脚和下方内容),它都会在所有侧栏中回显“匹配”字符串。
在这种情况下,我只希望当小部件位于id为“home header widget”的widgetized侧栏中时,启动echo。
“如果/然后”有什么问题?
function form( $instance ) {
global $wp_registered_widgets, $wp_registered_sidebars;
$sidebars_widgets = get_option(\'sidebars_widgets\');
if($sidebars_widgets["home-header-widget"]) echo \'Match\';
$instance = wp_parse_args( (array) $instance, array( \'title\' => \'\', \'text\' => \'\', \'hide_title\' => \'\' ) );
$title = format_to_edit($instance[\'title\']);
$text = format_to_edit($instance[\'text\']);
if($text==\'\'){
$text=\'hello world\';
}
最合适的回答,由SO网友:Gustav Graf 整理而成
$sideBars = wp_get_sidebars_widgets ();
$mySideBar = false;
foreach ($sideBars as $sideBarName => $sideBar) {
if (array_search ($this->id, $sideBar) !== false) {
$mySideBar = $sideBarName;
break;
}
}