上一節我們講解了如何窗體化插件的第一部分,今天我們將繼續第二部分,如何給我們創建的 Widget 創建選項 Panel。
我想使用沙發二代的同學已經感覺現在很輕松了,如果主題支持,根本不用修改模板就能調用該插件。但是最求完美的同學會發現默認輸出的 Title 是“最沙發的人”。有些比較追求個性的同學總是希望自己定義標題的。好吧,這一節,我們就完成這部分同學的愿望,能夠自定義標題。并推出沙發三代!
如何自定義標題呢?其實就是在 Widget 能夠提供一個選項的界面,讓用戶自己輸入標題。好吧,搜索下或者看看別人的插件(偶經常這樣寫插件的,如果你的插件因此被我偷師了,算你倒霉!嘿嘿!),發現是通過 register_widget_control
這個 hook 綁定的。這樣事情就變得很簡單了。我們把選項的數據存儲到一個名字叫做 widget_sofa option 中即可。修改如下:
在昨天創建的 widget_sidebar_sofa
的函數的最后中添加如下代碼:
function widget_sofa_options() {
$sofa_options = $new_sofa_options = get_option('widget_sofa'); //獲取數據庫中的 widget_sofa
if ( $_POST["sofa_submit"] ) { //如果提交更新
$new_sofa_options['title'] = strip_tags(stripslashes($_POST["sofa_title"]));
if ( $sofa_options != $new_sofa_options ) { //如果有更新
$sofa_options = $new_sofa_options;
update_option('widget_sofa', $sofa_options);
}
}
$title = attribute_escape($sofa_options['title']);
?>
<p><label for="wp_sofa_title"><?php _e('Title:'); ?> <input style="width: 250px;" id="sofa_title" name="sofa_title" type="text" value="<?php echo $title; ?>" /></label></p>
<input type="hidden" id="sofa_submit" name="sofa_submit" value="1" />
<?php
}
register_widget_control('WP-Sofa', 'widget_sofa_options', 300, 90);
上面這段代碼就是創建一個 Widget 選項的界面。代碼非常簡單,也做注釋,我這里也不多說了。
然后昨天的創建的 widget_sofa
函數中的 echo $before_widget;
中插入以下幾行:
<?
$sofa_options = get_option('widget_sofa');
$title = $sofa_options['title'];
if ( empty($title) ) $title = '最沙發的人';
這段代碼是獲取用戶設置的標題,如果沒有設置,則顯示默認的“最沙發的人”。
好了,這節到此為止,下一節我們講解 WordPress 的 API。請保持關注。沙發三代下載:wp-sofa-3.0.zip