久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

WordPressWidgets API

 天中仙 2012-01-30

這是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ā)新widget

Google Search Widget (曾經(jīng)是 original widget plugin 插件的一部分,該插件已停用)文件的每個部分都做了注釋,,你可以考慮用它作為widget的開發(fā)教程,。此外還有一些注意事項:

  • 加載插件時不要執(zhí)行任何代碼,。請使用plugins_loaded鉤子,,否則會因為未定義函數(shù)而導(dǎo)致致命錯誤。
  • 用register_sidebar_widget($name, $callback) 將widget添加到管理界面,。
  • 將以下模板作為示范:
function widget_myuniquewidget($args) {
extract($args);
 ?>
<?php echo $before_widget; ?>
<?php echo $before_title
. 'My Unique Widget'
. $after_title; ?>
Hello, World!
<?php echo $after_widget;  ?>
<?php
}
register_sidebar_widget('My Unique Widget',
'widget_myuniquewidget');

重要提示:如果要在插件中使用上述模板,,應(yīng)將其包裹在: function widget_myuniquewidget_register() {

 --the above goes   here--
register_sidebar_widget('My Unique Widget','widget_myuniquewidget');}
add_action('init', widget_myuniquewidget_register);

中。

  • 不要忽略$before_widget, $after_widget, $before_title與$after_title,。出于對不同主題兼容性的考慮,,這些參數(shù)都是必要的,。
  • 謹慎命名widget及其函數(shù)。widget名稱字符串和函數(shù)名稱字符串都會被用作HTML屬性,,不要在一個HTML文檔中出現(xiàn)兩個相同的id,。
  • 在內(nèi)部進行本地化,以保留HTML的id屬性,。如果你希望自己的widget名稱以文本域定位,,請傳遞array($name, $textdomain)來代替 $name。
  • 要容納多個widget(如文本widget和RSS widget),,你可以傳遞一個名稱為array($name_as_sprintf_pattern, $textdomain, $replacement)的更新值,。參見源代碼。
  • 你可以以多種方式使用上文中提到的變量,,在某些情況下甚至可以忽略它們,。比如有些widget可能不需要標題。有些widget會多次 使用 $before_widget 與 $after_widget,,也可能會將變量作為參數(shù),,告訴另一個模板標簽怎樣格式化輸出內(nèi)容。
  • 也可以使用下列語句在管理界面中添加配置頁面,。你的回調(diào)會被用在主表單中,,因此不能包含任何<form>標簽或表單提交按鈕。
      register_widget_control($name, $callback [, $width [, $height ]] );  
  • 給你的表單元素命名空間,,不要讓它們與其它widgets沖突
  • 每個widget都必須有一個獨一無二的名稱,。你可以提供一個回調(diào),注冊另一個相同名稱的widget來代替某個已經(jīng)注冊的widget,。
  • 將register_sidebar_widget()或 register_widget_control()的其它任何參數(shù)傳遞給回調(diào),。以文本widget和RSS widget為例。
  • 給注冊函數(shù)傳遞空字符串,,可以“取消”widget的注冊
  • 可能有些沒有記錄的函數(shù),。推薦你查看源代碼,了解我們怎樣用這些函數(shù)制作標準widget,。
  • 在Classic和Default主題(這兩個WordPress自帶主題都使用ul/li/h2構(gòu)造)之外選擇幾個主題測試widget,。
  • 發(fā)布自己的widget前請確認其安全性
  • 如果你希望自己開發(fā)的widget出現(xiàn)在WordPress.com上,可以給[email protected]發(fā)送郵件,,在郵件里注明widget的鏈接(不接受附件),,有人會審核的。

我還能用widget做些什么,?

  • 開發(fā)一個主題,,里面含有一個特別的widget,和其它主題區(qū)分開來
  • 這個做法怎么樣:用一個WordPress Loop循環(huán)來顯示邊注
  • 注冊一個替代widget,,緩沖原始widget,,并在一定程度上改變原始widget
  • 記住,,“側(cè)邊欄”只是對列表的一個稱呼,它可以以垂直方式顯示,,也可以以水平方式顯示,。
  • 同樣要記住的是,“widget”只是對一段配置型代碼段的稱呼,。widget可以是隱藏的,,也可以放在顯要的位置上。
  • 在腳本中使用widget的id和class屬性,,使側(cè)邊欄更有生機
  • 用script.aculo.us 或dbx(WordPress內(nèi)置)工具使得widget可拖拽或者甚至可分解
  • 記住,,widget控制臺API只是為了方便。你可以設(shè)置自己的管理界面,。
  • 給用戶提供技術(shù)支持,,從用戶那里獲取對widget的反饋信息。在你的widget控制臺下方給出你的email地址或者網(wǎng)站,。
  • [email protected]發(fā)送郵件,,在郵件里注明你的widget的鏈接,如果經(jīng)過審核,,你的widget會被發(fā)布在WordPress.com上供所有WordPress用戶使用,。

Widget——一次性或多次性 可以對widget進行編碼,讓它只出現(xiàn)一次或者出現(xiàn)多次,。只要你遵守一些操作規(guī)則,,WordPress會自動幫你多次顯示widget。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多