這是WordPress Widget(小工具)API(應(yīng)用程序接口)的技術(shù)性文檔,,目標讀者包括WordPress主題開發(fā)人員,、插件開發(fā)人員以及所有希望開發(fā)單機widget的用戶,。文檔假設(shè)讀者對PHP腳本語言有基本了解,。 widget是一個可在調(diào)用時利用echo命令將字符串數(shù)據(jù)輸出到STDOUT上的PHP函數(shù),。要將這樣的PHP函數(shù)轉(zhuǎn)換成 WordPress Widget,,需要用一個PHP回調(diào)(PHP文檔中的一個準型(Pseudo-Type))將這些PHP函數(shù)注冊為WordPress Widget,。WordPress widget API函數(shù)會負責注冊該PHP回調(diào),。 WordPress widget API位于 wp-includes/widgets.php中。 這是WordPress Widget(小工具)API(應(yīng)用程序接口)的技術(shù)性文檔,,目標讀者包括WordPress主題開發(fā)人員,、插件開發(fā)人員以及所有希望開發(fā)單機widget的用戶。文檔假設(shè)讀者對PHP腳本語言有基本了解,。 widget是一個可在調(diào)用時利用echo命令將字符串數(shù)據(jù)輸出到STDOUT上的PHP函數(shù),。要將這樣的PHP函數(shù)轉(zhuǎn)換成WordPress Widget,需要用一個PHP回調(diào)(PHP文檔中的一個準型(Pseudo-Type))將這些PHP函數(shù)注冊為WordPress Widget,。WordPress widget API函數(shù)會負責注冊該PHP回調(diào),。 WordPress widget API位于 wp-includes/widgets.php中,。
函數(shù)引用側(cè)邊欄函數(shù)
Widget函數(shù)
注意:不推薦使用以"wp_"開始的函數(shù),因為這些函數(shù)可能會隨著新版本的發(fā)布而有所變化,。這也是我們用 [Fhttp://codex./Function_Reference/register_sidebar_widget register_sidebar_widget()]代替wp_register_sidebar_widget()的原因,。
定義側(cè)邊欄下面這些函數(shù)可以使側(cè)邊欄在主題中正常顯示。 注冊多個側(cè)邊欄 register_sidebars( $count, $args ); 注冊一個或多個側(cè)邊欄以供當前主題使用,。大多數(shù)主題都只有一個側(cè)邊欄,。因此count參數(shù)不是必需參數(shù),且默認值為1,。 $args參數(shù)將被傳遞給register_sidebar()并遵循其格式,,但參數(shù)名除外,若count參數(shù)值為雙數(shù),,$args參數(shù)名將與sprintf()合作,,在每個側(cè)邊欄中插入或添加一個唯一數(shù)字。 例如,,以下代碼會生成兩個分別名為"Foobar 1"與 "Foobar 2"的側(cè)邊欄,。 register_sidebars(2, array('name'=>'Foobar %d')); 注冊一個側(cè)邊欄 register_sidebar( $args ); 可選的args參數(shù)是一個關(guān)聯(lián)數(shù)組,該關(guān)聯(lián)數(shù)組將作為第一個參數(shù)被傳遞給所有已激活的widget回調(diào),。(若傳遞的是字符串而非數(shù)組,,該參數(shù)將被 parse_str()遍歷,從而生成一個關(guān)聯(lián)數(shù)組,。)傳遞指定主題的HTML標簽以包裹widget與其標題,,這是參數(shù)的基本用法。下面是參數(shù)默認值: 'before_widget' => '< li id="%1$s" class="widget %2$s">', 'after_widget' => "</li>n", 'before_title' => '< h2 class="widgettitle">', 'after_title' => "</h2>n" 只有在你希望為側(cè)邊欄賦予獨有名稱時,,如"Right Sidebar"與"Left Sidebar",,或側(cè)邊欄需要被特別標記時,才有必要使用register_sidebar函數(shù)而不是register_sidebars函數(shù),。側(cè)邊欄 名稱只出現(xiàn)在管理面板中,,但也會被用作一個保存?zhèn)冗厵谂帕械乃饕R虼?,如果有另一個主題使用相同的側(cè)邊欄名稱,,那么側(cè)邊欄就可以再利用并重寫它們的排 列。 before/after參數(shù)的默認值適用于可生成帶有“h2”標題的列表型側(cè)邊欄的主題,。我們推薦所有主題都采用這種側(cè)邊欄,,以這種方式 構(gòu)建的主題可以輕松注冊側(cè)邊欄而無需擔心before/after標簽。如果主題由于某些原因無法以這種方式構(gòu)建,,那么注冊側(cè)邊欄時一定要指定 before/after標簽,。推薦逐字復(fù)制id和class屬性,以使內(nèi)部sprintf調(diào)用得以運行,,CSS樣式也能夠被應(yīng)用到單個widget上,。 在主題上顯示側(cè)邊欄 dynamic_sidebar( $sidebar ); 該函數(shù)按順序逐個調(diào)用已啟用的widget,,從而輸出側(cè)邊欄的框架。如果你有不止一個側(cè)邊欄,,你需要向該函數(shù)指明你希望輸出的側(cè)邊欄名稱或編號,。若顯示成功,該函數(shù)返回TRUE,,若失敗則返回FALSE,。 用返回的值決定是否顯示靜態(tài)側(cè)邊欄。這可保證即使在未激活widgets插件的情況下,,主題也能夠正常顯示,。下面是對該函數(shù)推薦用法,附帶一個可避免致命錯誤的測試,。 < ul id="sidebar"> <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?> < li>{static sidebar item 1}</li> < li>{static sidebar item 2}</li> <?php endif; ?> </ul> 如果按編號注冊側(cè)邊欄,,那么檢索時應(yīng)該按編號檢索。如果按名稱注冊側(cè)邊欄,,檢索時也應(yīng)按名稱檢索,。 開發(fā)Widgets在WordPress 2.8及更高版本中開發(fā)widgets 自WordPress 2.8起,widget開發(fā)開始變得簡單起來,。要創(chuàng)建一個widget,,你只需要擴展標準widget類和它的一些函數(shù)。 在標準類中,,也可以找到用以開發(fā)widget的函數(shù)的信息,。 默認用法 class My_Widget extends WP_Widget { function My_Widget() { // widget actual processes } function form($instance) { // outputs the options form on admin } function update($new_instance, $old_instance) { // processes widget options to be saved } function widget($args, $instance) { // outputs the content of the widget } } register_widget('My_Widget'); 示例 下面的代碼示例可生成一個名為FooWidget的widget工具,該widget具有一個可更改顯示名稱的設(shè)置表單,。 /** * FooWidget Class */ class FooWidget extends WP_Widget { /** constructor */ function FooWidget() { parent::WP_Widget(false, $name = 'FooWidget'); } /** @see WP_Widget::widget */ function widget($args, $instance) { extract( $args ); $title = apply_filters('widget_title', $instance['title']); ?> <?php echo $before_widget; ?> <?php if ( $title ) echo $before_title . $title . $after_title; ?> Hello, World! <?php echo $after_widget; ?> <?php } /** @see WP_Widget::update */ function update($new_instance, $old_instance) { return $new_instance; } /** @see WP_Widget::form */ function form($instance) { $title = esc_attr($instance['title']); ?> < p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></label></p> <?php } } // class FooWidget 然后可以在widgets_init鉤子(hook)中注冊這個示例widget: // register FooWidget widget add_action('widgets_init', create_function(, 'return register_widget("FooWidget");')); OK,,現(xiàn)在你就擁有一個通用widget了,不需要再對它做特別修改,。 更多信息請看WordPress 2.8的版本信息,。 開發(fā)新widgetGoogle Search Widget (曾經(jīng)是 original widget plugin 插件的一部分,該插件已停用)文件的每個部分都做了注釋,,你可以考慮用它作為widget的開發(fā)教程,。此外還有一些注意事項:
function widget_myuniquewidget($args) { 重要提示:如果要在插件中使用上述模板,,應(yīng)將其包裹在:
function widget_myuniquewidget_register() { --the above goes here-- 中。
register_widget_control($name, $callback [, $width [, $height ]] );
我還能用widget做些什么,?
Widget——一次性或多次性 可以對widget進行編碼,讓它只出現(xiàn)一次或者出現(xiàn)多次,。只要你遵守一些操作規(guī)則,,WordPress會自動幫你多次顯示widget。 |
|
來自: 天中仙 > 《WordpPress啦》