将_widget()与自定义微件一起使用时,如何获取微件的管理设置

时间:2013-04-25 作者:MatthewLee

我四处寻找这个问题的答案,我发现:Manual display of widget 这给了我一个解决方案:

if(function_exists(\'the_widget\')) {
   $instance = get_option( \'widget_backspikewidget\' ); 
   the_widget(\'BackSpikeWidget\', $instance[2]);
}
这很有效。但正如@GreatWitneroth在他的回答中指出的那样,它包含了一个问题,即如果数组键发生更改,则此解决方案将中断。

那么,有没有人知道在使用\\u小部件时,有没有更安全的方法来获取管理面板中设置的小部件的设置?

编辑:所以我不确定我的问题是否足够清楚。这就是我正在做的。我正在创建一个包含小部件的插件。该插件将在多个网站上使用。每个用户都可以在其管理仪表板中为小部件设置一组选项。然后,我想确保用户选择选项的小部件始终存在于插件创建的页面上。因此,我在页面中使用了\\u widget()对小部件进行了硬编码,并获取了用户设置的选项,以设置小部件的实例,以匹配小部件在站点其他位置安装小部件时的相同配置。用户是否可以在不停用或卸载插件的情况下破坏此功能?再次感谢!

1 个回复
SO网友:s_ha_dum

如果要显示小部件的特定实例,则必须知道该实例是哪个实例。当然,对实例值进行硬编码并不灵活,但除非您有其他方法来识别小部件,否则我看不到任何选项。

如果您可以找到其他方法来识别小部件,那么您可以对阵列进行爬网。例如,您可以对该数组进行爬网,并检查特定字符串的小部件标题(使用默认文本小部件):

$instance = get_option( \'widget_text\' ); 
foreach ($instance as $k => $v) {
  if (\'hi there\' == $v[\'title\']) {
    the_widget(\'WP_Widget_Text\',$instance[$k]);
  }
}

结束