问题描述

我想在窗口小工具选项中保存一些参数,然后将其传递到另一个页面。窗口小工具是调用 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();

$settingsarray(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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。