问题描述
我想在窗口小工具选项中保存一些参数,然后将其传递到另一个页面。窗口小工具是调用 Web 服务的窗体。
我想通过的选项是当前硬编码到结果页面 (完成为模板) 的 Web 服务的身份验证。因此,他们应该从网站用户隐藏。
小工具/插件的代码:
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 的问题呢,很抱歉。
最佳解决方案
@ JonathonByrd 的答案大概是’best’ – 当然你应该使用 get_option
,如果可能的话,因为不能保证选项名称将保持在 WordPress 版本之间。
类似地,@JonathonByrd 也依赖于使用可能被删除/重命名的全局变量 (尽管可能不大可能) 。
不幸的是没有公开的包装器,我们可以可靠地使用。最接近的是您的 Widget 类的 get_settings
方法。我们假设你的小工具类是 My_Widget_Class
,那么:
$dummy = new My_Widget_Class();
$settings = $dummy->get_settings();
$settings
是 array(instance number => settings)
形式的数组。通常,您的窗口小工具将具有像 my-widget-class-3
这样的 ID,’instance number’ 在这里是 3
$settings[3]
给出小工具 my-widget-class-3
的设置 (作为一个数组) 。这感觉是一种更可靠和更有前途的方法。
次佳解决方案
根本不是一个 noob 的问题。
您将需要使用 MySQL(使用 PhpMyAdmin 或类似软件),并首先获取该选项的名称。以下 SQL 将列出窗口小工具选项:
SELECT *
FROM `wp_options`
WHERE `option_name`
REGEXP '^widget_'
LIMIT 0 , 30
然后在你的模板 (或 post /page 与某种 php exec 插件),你可以这样 get_option()
:
<?php echo get_option('your_widget_option_name'); ?>
Et 瞧!
第三种解决方案
所有窗口小工具及其选项都存储在 global $wp_registered_widgets
中。只需加载此变量并打印出内容,找到您要查找的窗口小工具选项。
第四种方案
我用 Stephen Harris 建议的方法。
$dummy = new My_Widget_Class();
$settings = $dummy->get_settings();
$settings = reset($settings);
如果您不知道窗口小工具的 ID 是什么,那么 reset() 会从数组中提供第一个键值。
注意:如果窗口小工具的多个副本处于活动状态,则不起作用。因为它只返回窗口小工具的第一个副本的设置。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。