如何通过小部件管理确定小部件已添加到哪个侧边栏?

时间:2011-08-17 作者:N2Mystic

在下面的脚本(位于自定义小部件中)中,我试图确定小部件已添加到哪个侧栏区域,因为我想根据用户已将小部件添加到哪个侧栏来更改默认文本。编辑小部件时,此代码应仅在管理端执行。

然而,无论小部件放在哪个侧栏中(我的主题有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\';
    }

2 个回复
最合适的回答,由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;
      }
    }
SO网友:Sam Margulies

$widgets = wp_get_sidebars_widgets();
if( in_array( $this->id, $widgets[\'home-header-widget\'] ) ) { 
    echo \'Match\';
}
这应该是可行的,但前提是用户已经保存了小部件,而不是在他们第一次将其拖动到主标题小部件区域时。

结束

相关推荐

Why use widgets?

我对使用WordPress很陌生,我想知道使用小部件的好处是什么?看here 这听起来像是为那些不是程序员的人准备的,他们想在他们的网站上添加插件。对吗?或者小部件是否在某种程度上使站点更加健壮?