問題描述
我想在視窗小工具選項中儲存一些引數,然後將其傳遞到另一個頁面。視窗小工具是呼叫 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。