在小部件之外使用小部件选项

时间:2010-09-22 作者:JohnnyBizzle

我想在小部件选项中保存一些参数,然后将这些参数传递到另一个页面。小部件是一种调用webservice的表单。

我想传递的选项是webservice的身份验证,该验证当前硬编码到结果页中(作为模板完成)。因此,他们应该对网站用户隐藏。

小部件/插件的代码:

 function widget($args, $instance){
  extract($args);
  $title = apply_filters(\'widget_title\', empty($instance[\'title\']) ? \'Choose a service\' : $instance[\'title\']);
  $lineOne = empty($instance[\'username\']) ? \'\' : $instance[\'username\'];
  $lineTwo = empty($instance[\'password\']) ? \'\' : $instance[\'password\'];

  # Before the widget

  echo $before_widget; // etc...
结果页。。。

$url = "http://www.nhs.uk/NHSCWS/Services/ServicesSearch.aspx?user=".[USERNAME]."&pwd=".[PASSWORD]."&q=".$_POST[\'PostCode\']."&type=".$_POST[\'ServiceType\']."";
仍在学习WP是如何连接在一起的,因此对于n00b问题感到抱歉。

4 个回复
SO网友:Stephen Harris

@乔纳森·伯德的答案可能是“最好的”——当然你应该使用get_option 如果可能的话,因为不能保证选项名称在WordPress版本之间保持不变。

类似地,@JonathonByrd也依赖于使用一个全局变量,该变量可能会被删除/重命名(尽管可能不太可能)。

不幸的是,没有我们可以可靠使用的公共包装器。最接近的是get_settings 控件类的方法。假设您的widget类是My_Widget_Class, 然后:

 $dummy = new My_Widget_Class();
 $settings = $dummy->get_settings();
$settings 然后是窗体的数组array(instance number => settings). 通常,您的小部件将具有以下任何IDmy-widget-class-3 - 这里的“实例号”是3,依此类推

 $settings[3]
提供小部件的设置(作为数组)my-widget-class-3. 我觉得这是一种更可靠、更经得起未来考验的方法。

SO网友:Tom Wright

这根本不是一个愚蠢的问题。

您需要深入到MySQL(使用PhpMyAdmin或类似的工具)并首先获得选项的名称。以下SQL将列出小部件选项:

SELECT *
FROM `wp_options`
WHERE `option_name`
REGEXP \'^widget_\'
LIMIT 0 , 30
然后在模板(或带有某种php exec插件的帖子/页面)中,您可以get_option() 像这样:

<?php echo get_option(\'your_widget_option_name\'); ?>
瞧!

SO网友:Marketing Consultant

所有小部件及其选项都存储在global $wp_registered_widgets. 只需加载此变量并打印出内容,即可找到您要查找的小部件选项。

SO网友:Ulugov

我使用了斯蒂芬·哈里斯建议的方法。

$dummy = new My_Widget_Class();
$settings = $dummy->get_settings();
$settings = reset($settings);
reset()给出数组中的第一个键值,如果您不知道小部件的ID是什么。

注意:如果小部件有多个副本处于活动状态,则没有帮助。因为它只返回小部件的第一个副本的设置。

结束

相关推荐

如何获取我在Add_Options_Page中为我的页眉指定的标题

我有add_options_page(\'Post Products Settings\', \'Post Products Settings\', \'administrator\', \'pp_settings\', \'pp_settings_page\'); 无论如何,我可以得到在第一个参数中指定的内容,以便在我的页眉中使用?我知道我可以硬编码,但只是好奇