2012-03-11 40 views
0

我做了一個WordPress插件,可以獲取未知數量的Google日曆提要並顯示小部件中每個日曆的下一個事件。它的工作原理,但現在我已將代碼中的提要硬編碼。這似乎不是很好的做法,所以我正在計劃管理界面。對於我添加的每個提要,都有三條與它們一起存儲在數組中的信息:a)提要url。 b)飼料的暱稱。 c)如果應該顯示暱稱。獲取未知數量的選項到wordpress小部件管理頁面

這裏是管理界面的一些醜陋的小樣我也只是爲了顯示這個想法: Screenshot of mockup

我的問題是:

  1. 我知道所有的教程如何存儲一條信息在一個變量中。但是,我如何存儲未知數量的這些數據呢?我可以使用$實例變量的數組嗎?我真的沒有從我見過的代碼示例中知道如何做到這一點。

  2. 我該如何做到這一動態,因此對於每個Feed,我都會在界面中立即添加它?能夠改變它們的順序也是很棒的。

我想學習和關於第二個問題我想我可以在javascript中使用某些東西來使用upp。但對於第一個問題,我不知道從哪裏開始尋找。所以,如果有人能夠給出一些提示,並朝正確的方向推動,我會非常感激。

更新

感謝您的意見。我真的需要釋放一些時間來嘗試實現這一點,但我可能需要更多的時間。答案是最有幫助的我得到賞金...

+0

usabillity提示:更改單選按鈕標籤,真假不是非常人性化。 – janw 2012-03-15 14:15:44

+0

我認爲您的陳述是真實的:-p – 2012-03-15 14:24:15

回答

1

您可以保存陣列與add_option()update_option()而且讀get_option() 我不推薦這個,如果你打算存儲更多的則〜20。

<?php 
$feeds = array(
    0 => array(
     'feedUrl' => 'http://calander.google.com/calname1', 
     'nickname' => 'first calander', 
     'useNick' => false 
    ), 
    1 => array(
     'feedUrl' => 'http://calander.google.com/calname2', 
     'nickname' => 'birtday calander', 
     'useNick' => true 
    ), 
    2 => array(
     'feedUrl' => 'http://calander.google.com/calname3', 
     'nickname' => 'take out garbage days calander', 
     'useNick' => false 
    ), 
); 
add_option('calender_feeds', $feeds, '', 'no'); 
?> 


<?php 
//read feeds 
$feeds = get_option('calender_feeds'); 
?> 

正如建議爲動態添加多個字段我建議jQuery。

+0

謝謝。也失去了如何獲得表格存儲到該陣列...: -/ – 2012-03-15 12:05:02

+0

感謝投票我的答案;),你的意思是與什麼形式存儲? – janw 2012-03-15 12:35:08

+0

我認爲最大的問題是我還沒有足夠的PHP/HTML理解。但根據Wordpress Widget API網站上的示例,創建一個在數據庫中存儲一個選項的表單很簡單。但在這種情況下,我不能這樣做。如果存在的話,我需要先選擇這個選項(你展示瞭如何)。然後將數據追加到數組中,最後用新數組覆蓋舊數組。我不能在html輸入行中簡單地做到這一點。對不起,如果我吮吸解釋...但我會嘗試做更多的研究... – 2012-03-15 14:04:05

1

爲什麼不只是爲這個插件創建一個新的表wp_feedwhatever什麼或類似,然後創建一個記錄每個飼料。

另一種方式(WordPress傾向於使用很多)是序列化的數據 - 這也是一個工作的屁股上的痛苦。

動態部分可以用jQuery完成。

+0

wordpress在其wp_options表中使用的序列化數據在與'add_option','update_option','get_option'一起使用時很容易使用 – janw 2012-03-15 12:02:04

1

Widgets API可能會有所幫助。這是創建小部件的代碼。我認爲這可能是處理您嘗試實現的最佳方式。如果你看看底部,有一個小部件的例子。有了這個,你可以創建多個calander小部件的實例,每個實例將有你想要的三個選項。

WP_Widget :: form()是您收集三個字段的用戶信息的地方。

WP_Widget :: update()用於存儲數據庫中的信息。 Wordpress爲你做複雜的東西做得很好。

WP_Widget :: widget()用於獲取數據並在您的小部件中使用它。

相關問題