本文列出了WordPress 2.1及以上版本中可用于插件開(kāi)發(fā)的動(dòng)作鉤子(hook)。
注意:為本文添加詞條或做其它改動(dòng)時(shí),請參照當前格式。添加時(shí)請說(shuō)明過(guò)濾器函數適用的數據類(lèi)型,如果過(guò)濾器函數接收多個(gè)參數,請在參數列表中說(shuō)明。
在WordPress 2.7中,當已登錄用戶(hù)在默認主題打開(kāi)網(wǎng)站主頁(yè)時(shí),WordPress會(huì )運行以下動(dòng)作鉤子函數:
add_attachment
附件文件首次加入數據庫時(shí),執行add_attachment函數。函數接收的參數:附件ID。
add_category
與create_category相同。
clean_post_cache
清除日志緩存時(shí),執行該動(dòng)作函數。函數接收的參數:日志ID。參見(jiàn)clean_post_cache()。
create_category
生成新類(lèi)別時(shí),執行該動(dòng)作函數。函數接收的參數:類(lèi)別ID。
delete_attachment
從數據庫和相應鏈接/日志中刪除某個(gè)類(lèi)別后,執行該動(dòng)作函數。函數接收的參數:類(lèi)別ID。
delete_post
將要刪除某篇日志或頁(yè)面時(shí),執行該動(dòng)作函數。函數接收的參數:日志ID或頁(yè)面ID。
deleted_post
刪除某篇日志或頁(yè)面后,執行該動(dòng)作函數。函數接收的參數:日志ID或頁(yè)面ID。
edit_attachment
數據庫中附件文件被更新時(shí)執行該動(dòng)作函數。函數接收的參數:附件ID。
edit_category
更新/編輯某個(gè)類(lèi)別時(shí)(包括添加/刪除日志或博客反向鏈接,或更新日志/博客反向鏈接的類(lèi)別),執行該動(dòng)作函數。函數接收的參數:類(lèi)別ID。
edit_post
更新/編輯某篇日志或頁(yè)面時(shí)(包括添加/更新評論,這會(huì )導致日志評論總數的更新),執行該動(dòng)作函數。函數接收的參數:日志ID或頁(yè)面ID。
pre_post_update
更新日志或頁(yè)面前執行該動(dòng)作函數。函數接收的參數:日志ID。
private_to_publish
當日志狀態(tài)從private(私密)更改為published(公開(kāi))時(shí),執行該動(dòng)作函數。函數接收的參數:日志對象。(用以翻譯日志狀態(tài)的動(dòng)作函數目前可用;參見(jiàn)wp_transition_post_status())。
publish_page
發(fā)表頁(yè)面或編輯某個(gè)狀態(tài)為“published”的頁(yè)面時(shí),執行該動(dòng)作函數。函數接收的參數:頁(yè)面ID。(警告:該動(dòng)作函數不能在WordPress2.3以及更高版本中運行;但動(dòng)作函數'transition_post_status'能夠運行。更新信息:publish_page動(dòng)作函數可在WordPress 2.6及之后版本中運行。)
publish_phone
通過(guò)電子郵件添加新日志后,執行該動(dòng)作函數。函數接收的參數:日志ID。
publish_post
發(fā)表日志或編輯某個(gè)狀態(tài)為“published”的日志時(shí),執行該動(dòng)作函數。函數接收的參數:日志ID。
save_post
新建或更新一篇日志/頁(yè)面時(shí),執行該動(dòng)作函數。更新可以來(lái)自導入、日志/頁(yè)面編輯框、xmlrpc或郵件日志。函數接收的參數:日志ID。
更新信息存入數據庫后執行該動(dòng)作函數。
注意:日志ID可能會(huì )參照日志的修改版而不是最新發(fā)布版。wp_is_post_revision可獲取日志最新版的ID。
wp_insert_post
與save_post相同,更新信息存入數據庫后執行該動(dòng)作函數。
xmlrpc_public_post
通過(guò)XMLRPC請求發(fā)表日志,或通過(guò)XMLRPC編輯某個(gè)狀態(tài)為“published”的日志時(shí),執行該動(dòng)作函數。函數接收的參數:日志ID。
comment_closed
嘗試顯示評論輸入框而日志卻設置為不允許評論時(shí),執行該動(dòng)作函數。函數接收的參數:日志ID。
comment_id_not_found
試圖顯示評論或評論輸入框卻未找到日志ID時(shí),執行該動(dòng)作函數。函數接收的參數:日志ID。
comment_flood_trigger
調用wp_die以阻止接收評論前,若檢測到評論數量異常增多,執行該動(dòng)作函數。函數接收的參數:上一次評論發(fā)表時(shí)間,當前評論發(fā)表時(shí)間。
comment_on_draft
日志為草稿狀態(tài)卻試圖顯示評論或評論輸入框時(shí),執行該動(dòng)作函數。函數接收的參數:日志ID。
comment_post
評論剛被存入數據庫時(shí),執行此動(dòng)作函數。函數接收的參數:評論ID,評論審核狀態(tài)("spam",0(表示未審核),1(表示已審核))。
edit_comment
數據庫中的評論被更新或編輯后,執行此動(dòng)作函數。函數接收的參數:評論ID。
delete_comment
評論即將被刪除前,執行此動(dòng)作函數。函數接收的參數:評論ID。
pingback_post
日志新添加pingback后,執行此動(dòng)作函數。函數接收的參數:評論ID。
pre_ping
執行pingback前,執行此動(dòng)作函數。函數接收的參數:將要處理的日志鏈接數組,以及日志的“pung”設置。
trackback_post
日志新添加trackback后,執行此動(dòng)作函數。函數接收的參數:評論ID。
wp_blacklist_check
執行該動(dòng)作函數以判斷評論是否應被禁止。函數接收的參數:評論者的名稱(chēng)、電子郵件、URL、評論內容、IP地址、用戶(hù)代理(瀏覽器)。該函數可執行wp_die以拒絕評論,也可以修改某個(gè)參數以使評論中可包含用戶(hù)在WordPress選項中設置的黑名單關(guān)鍵詞。
wp_set_comment_status
評論狀態(tài)發(fā)生改變時(shí),執行此動(dòng)作函數。函數接收的參數:評論ID,表明新?tīng)顟B(tài)的狀態(tài)字符串("delete", "approve", "spam", "hold")。
add_link
新反向鏈接首次加入數據庫時(shí),執行此動(dòng)作函數。函數接收的參數:鏈接ID。
delete_link
刪除反向鏈接時(shí),執行此動(dòng)作函數。函數接收的參數:鏈接ID。
edit_link
編輯反向鏈接時(shí),執行此動(dòng)作函數。函數接收的參數:鏈接ID。
atom_entry
在atom訂閱中,顯示某篇博客日志信息后(但關(guān)閉該日志標簽前),執行此動(dòng)作函數。
atom_head
在atom訂閱中,顯示所訂閱的某個(gè)博客信息后,還未顯示該博客第一篇日志前,執行此動(dòng)作函數。
atom_ns
為atom訂閱的根XML元素執行此動(dòng)作函數(以添加命名空間)。
commentrss2_item
在評論訂閱中,顯示某條評論信息后(但關(guān)閉該評論的標簽前),執行此動(dòng)作函數。函數接收的參數:評論ID,日志ID。
do_feed_(feed)
生成訂閱信息時(shí)執行此動(dòng)作函數,其中的訂閱指的是訂閱類(lèi)型(rss2,atom,rdf等)。顯示訂閱信息所用優(yōu)先級應低于10。函數接收的參數:true(評論訂閱),或false(日志訂閱)。
rdf_header
在rdf訂閱中,顯示所訂閱的博客信息后,還未顯示該博客第一篇日志前,執行此動(dòng)作函數。
rdf_item
在RDF訂閱中,顯示某篇博客日志信息后(但關(guān)閉該日志標簽前),執行此動(dòng)作函數。
rdf_ns
為RDF訂閱的根XML元素執行此動(dòng)作函數(以添加命名空間)。
rss_head
在RSS訂閱中,顯示所訂閱的博客信息后,還未顯示該博客第一篇日志前,執行此動(dòng)作函數。
rss_item
在RSS訂閱中,顯示某篇博客日志信息后(但關(guān)閉該日志標簽前),執行此動(dòng)作函數。
rss2_head
在RSS2訂閱中,顯示所訂閱的博客信息后,還未顯示該博客第一篇日志前,執行此動(dòng)作函數。
rss2_item
在RSS2訂閱中,顯示某篇博客日志信息后(但關(guān)閉該日志標簽前),執行此動(dòng)作函數。
rss2_ns
為RSS2訂閱的根XML元素執行此動(dòng)作函數(以添加命名空間)。
comment_form
在標準WordPress主題中執行此動(dòng)作函數以插入評論表單。函數接收的參數:日志ID。
do_robots
模板文件選擇器認為這是一個(gè)來(lái)自robots.txt的請求時(shí),執行該動(dòng)作函數。
do_rebotstxt
在do_robots函數為robots.txt文件顯示“Disallow”鏈接前,執行此動(dòng)作函數。
get_footer
加載footer.php模板文件前,模板調用get_footer函數時(shí)執行此動(dòng)作函數。
get_header
加載header.php模板文件前,模板調用get_header函數時(shí)執行此動(dòng)作函數。
switch_theme
更改博客主題時(shí)執行此動(dòng)作函數。函數接收的參數:新主題的名稱(chēng)。
template_redirect
決定用以顯示所請求頁(yè)面的模板文件前執行此動(dòng)作函數,以便插件改寫(xiě)對模板文件的選擇。示例(僅供參考,無(wú)實(shí)際用途):將所有請求重定向到當前主題目錄下的all.php模板文件。
function all_on_one () {
include(TEMPLATEPATH . '/all.php');
exit;
}
add_action('template_redirect', 'all_on_one');
wp_footer
模板在博客頁(yè)面的最下方附近調用wp_footer函數時(shí)執行該動(dòng)作函數。
wp_head
模板調用wp_head函數時(shí)執行動(dòng)作函數wp_head。wp_head通常被放在頁(yè)面模板最上方<head>和 </head>之間。該動(dòng)作函數不接受參數。
wp_meta
模板文件sidebar.php調用wp_meta函數以允許插件在側邊欄加入內容時(shí),執行此動(dòng)作函數。
wp_print_scripts
WordPress將已記錄的JavaScript腳本輸入頁(yè)面的頁(yè)眉部分前,執行此動(dòng)作函數。
activate_(插件文件名)
首次激活某插件時(shí)執行此動(dòng)作函數。參見(jiàn)常用函數-register_activation_hook。
activity_box_end
在控制板界面上的活動(dòng)框末端執行該動(dòng)作函數。
add_category_form_pre
添加分類(lèi)的文本框尚未顯示在管理菜單的界面上時(shí),執行此動(dòng)作函數。
admin_head
在控制板的HTML版塊<head>中執行此動(dòng)作函數。
admin_head-(page_hook)或admin_head-(plguin_page)
在插件所生成頁(yè)面的控制板的HTML版塊<head>中執行此動(dòng)作函數。
admin_init
加載管理界面前執行該動(dòng)作函數。參見(jiàn)wp-admin/admin.php,wp-admin/admin-post.php,以及wp-admin/admin-ajax.php。
admin_footer
在主標簽中的控制板末端執行該動(dòng)作函數。
admin_print_scripts
在HTML的信息頭部分執行此動(dòng)作函數,以使插件將JavaScript腳本添加到所有管理界面。
admin_print_styles
在HTML的信息頭部分執行此動(dòng)作函數,以使插件將CSS或樣式表單添加到所有管理界面。
admin_print_scripts-(page_hook) 或 admin_print_scripts-(plugin_page)
執行此動(dòng)作函數,以便將JavaScript腳本輸入某個(gè)由插件生成的管理頁(yè)面的HTML信息頭部分。使用add_management_page(),add_options_page()等函數將插件菜單選項添加到管理菜單中時(shí),返回(page_hook)。示例如下:
function myplugin_menu() {
if ( function_exists('add_management_page') ) {
$page = add_management_page( 'myplugin', 'myplugin', 9, __FILE__, 'myplugin_admin_page' );
add_action( "admin_print_scripts-$page", 'myplugin_admin_head' );
}
check_passwords
創(chuàng )建新用戶(hù)賬號時(shí),執行該動(dòng)作函數以驗證兩次輸入的密碼是否一致。函數接收的參數:登錄名數組,首次輸入的密碼,第二次輸入的密碼。
dbx_page_advanced
在管理菜單的頁(yè)面編輯界面上“advanced”版塊的最下方執行此動(dòng)作函數。
dbx_page_sidebar
在管理菜單的頁(yè)面編輯界面工具條的最下方執行此動(dòng)作函數。
dbx_post_advanced
在管理菜單的日志編輯界面上“advanced”版塊的最下方執行此動(dòng)作函數。
dbx_post_siderbar
在管理菜單的日志編輯界面工具條的最下方執行此動(dòng)作函數。WordPress 2.5或更高版本中則執行 add_meta_box()函數。
deactivate_(插件文件名)
禁用插件時(shí)執行此動(dòng)作函數。
delete_user
刪除用戶(hù)時(shí)執行此動(dòng)作函數。函數接收的參數:用戶(hù)ID。
edit_category_form
添加/編輯分類(lèi)表顯示在界面上后(HTML表標簽結束前),執行此動(dòng)作函數。
edit_category_form_pre
編輯分類(lèi)表顯示在管理菜單界面前,執行此動(dòng)作函數。
edit_tag_form
添加/編輯標簽表顯示在界面上后(HTML表標簽結束前),執行此動(dòng)作函數。
edit_tag_form_pre
編輯標簽表顯示在管理菜單界面前,執行此動(dòng)作函數。
edit_form_advanced
在管理菜單中日志編輯框的“advanced”版塊前執行此動(dòng)作函數。
edit_page_form
在管理菜單中頁(yè)面編輯框的“advanced”版塊前執行此動(dòng)作函數。
edit_user_profile
在管理菜單中用戶(hù)資料的最后部分執行此動(dòng)作函數。
load_(page)
加載管理菜單頁(yè)面時(shí)執行此動(dòng)作函數。該動(dòng)作函數不能直接添加——添加管理菜單過(guò)程參見(jiàn)定制插件管理菜單。如果希望直接添加該函數,add_options_page和類(lèi)似函數返回的值能夠給出動(dòng)作函數名稱(chēng)。
login_form
在登錄框的結尾部分前執行此動(dòng)作函數。
login_head
在登錄界面HTML頁(yè)眉部分的結尾部分前執行此動(dòng)作函數。
lost_password
在“通過(guò)電子郵件找回密碼”顯示在登錄界面前執行此動(dòng)作函數。
lostpassward_form
在通過(guò)電子郵件找回密碼的表格尾部執行此動(dòng)作函數,使插件能夠提供更多字段。
lostpassward_post
用戶(hù)要求通過(guò)電子郵件找回密碼時(shí)執行此動(dòng)作函數,使插件能夠在找回密碼前修改PHP $_POST變量。
manage_link_custom_column
反向鏈接管理界面中出現未知列名稱(chēng)時(shí)執行此動(dòng)作函數。函數接收的參數:列名稱(chēng),鏈接ID。參見(jiàn)插件API/常用過(guò)濾器函數中的過(guò)濾器函數manage_links_columns,該函數可添加自定義列。
manage_posts_custom_column
日志管理界面中出現未知列名稱(chēng)時(shí)執行此動(dòng)作函數。函數接收的參數:列名稱(chēng),日志ID。參見(jiàn)插件API/常用過(guò)濾器函數中的過(guò)濾器函數manage_posts_columns,該函數可添加自定義列。(具體用法和示例參見(jiàn) )。
manage_pages_custom_column
頁(yè)面管理界面中出現未知列名稱(chēng)時(shí)執行此動(dòng)作函數。函數接收的參數:列名稱(chēng),頁(yè)面ID。參見(jiàn)插件API/常用過(guò)濾器函數中的過(guò)濾器函數manage_pages_columns,該函數可添加自定義列。
password_reset
用戶(hù)將舊密碼更改為新密碼前執行此動(dòng)作函數。
personal_options_update
用戶(hù)在控制板中更新設置時(shí)執行此動(dòng)作函數。
plugins_loaded
所有插件加載完畢后執行此動(dòng)作函數。
profile_personal_options
在用戶(hù)資料編輯iemian的“關(guān)于您自己”版塊結尾處執行此動(dòng)作函數。
profile_update
更新用戶(hù)資料時(shí)執行此動(dòng)作函數。函數結合搜的參數:用戶(hù)ID。
register_form
在新用戶(hù)注冊表結尾部分前執行此動(dòng)作函數。
register_post
處理新用戶(hù)注冊請求前執行此動(dòng)作函數。
restrict_manage_posts
需要編輯的日志列表顯示在管理菜單界面前,執行此動(dòng)作函數。
retrieve_password
檢索用戶(hù)密碼以發(fā)送密碼提醒郵件時(shí)執行此動(dòng)作函數。函數接收的參數:登錄名。
set_current_user
默認函數wp_set_current_user更改用戶(hù)后,執行此動(dòng)作函數。注意:wp_set_current_user是一個(gè)“插入式”函數,即插件可以改寫(xiě)該函數;參見(jiàn)插件API。
show_user_profile
在用戶(hù)資料編輯界面結尾部分執行此動(dòng)作函數。
simple_edit_form
在控制板的“簡(jiǎn)單”日志編輯框的結尾部分執行此動(dòng)作函數(默認情況下,簡(jiǎn)單編輯框僅用于書(shū)簽工具——沒(méi)有“高級”選項)。
update_option_(option_name)
update_option函數更新WordPress選項后,執行該動(dòng)作函數。函數接收的參數:原選項值,新選項值。用戶(hù)需要為希望更新的選項添加一個(gè)動(dòng)作函數,例如更新“foo”時(shí)用函數update_option_foo來(lái)呼應。
upload_files_(tab)
執行該動(dòng)作函數以顯示上傳文件管理界面上的某個(gè)頁(yè)面;“tab”是自定義動(dòng)作函數表的名稱(chēng)??梢杂眠^(guò)濾器函數wp_upload_tabs來(lái)定義自定義表(參見(jiàn)插件API/常用過(guò)濾器函數)。
user_register
首次創(chuàng )建用戶(hù)資料時(shí)執行此動(dòng)作函數。函數接收的參數:用戶(hù)ID。
wp_ajax_(action)
在管理菜單中執行此動(dòng)作函數以運行未知類(lèi)型的AJAX。
wp_authenticate
用戶(hù)登錄時(shí),執行該動(dòng)作函數以驗證用戶(hù)身份。函數接收的參數:用戶(hù)名和密碼數組。
wp_login
用戶(hù)登錄時(shí)執行此動(dòng)作函數。
wp_logout
用戶(hù)退出登錄時(shí)執行此動(dòng)作函數。
本部分介紹的都是與WordPress查詢(xún)(決定該顯示哪一篇日志)、WordPress主循環(huán)、激活插件以及WordPress基礎代碼相關(guān)的動(dòng)作函數。
admin_menu
控制板中的菜單結構顯示無(wú)誤后,執行此動(dòng)作函數。
admin_notices
管理菜單顯示在頁(yè)面上時(shí)執行此動(dòng)作函數。
blog_privacy_selector
博客默認隱私選項顯示在頁(yè)面上時(shí),執行此動(dòng)作函數。
check_admin_referer
系統出于安全考慮檢查隨機數后在默認函數check_admin_referrer中執行check_admin_referer動(dòng)作鉤子,使插件因安全原因而強制WordPress停止運行。注意:check_admin_referrer也是一個(gè)“插入式”函數,即插件可以改寫(xiě)該函數;參見(jiàn)插件API。
check_ajax_referer
系統從cookies中成功驗證用戶(hù)的登錄名和密碼后,在默認函數check_ajax_referer(這是在有AJAX請求進(jìn)入wp-admin/admin-ajax.php腳本時(shí)所調用的函數)中執行此動(dòng)作函數,使插件能夠因安全原因強制WordPress停止運行。注意:check_ajax_referer函數也是一個(gè)“插入式”函數,即插件可以改寫(xiě)該函數;參見(jiàn)插件API。
generate_rewrite_rules
重寫(xiě)規則生成后,執行此動(dòng)作函數。函數接收的參數:WP_Rewrite類(lèi)變量列表。注意:在修改重寫(xiě)規則時(shí),使用rewrite_rules_array過(guò)濾器函數比使用該動(dòng)作函數更加方便。
init
WordPress加載完畢但尚未發(fā)送頁(yè)眉信息時(shí)執行該動(dòng)作函數。函數適用于解析$_GET or $_POST 觸發(fā)器。
loop_end
WordPress主循環(huán)最后一篇日志執行完畢后,執行此動(dòng)作函數。
loop_start
執行WordPress主循環(huán)第一篇日志前,執行此動(dòng)作函數。
parse_query
在主查詢(xún)或WP_Query的任何實(shí)例(如query_posts,get_posts或 get_children)中查詢(xún)解析結束時(shí),執行此動(dòng)作函數。函數接收的參數:$wp_query 對象內容列表。
parse_request
在主WordPress函數wp中解析查詢(xún)請求后,執行該動(dòng)作函數。函數接收的參數:引用全局變量$wp對象的數組。
pre_get_posts
在get_posts函數開(kāi)始操作查詢(xún)前執行此動(dòng)作函數。函數接收的參數:$wp_query對象的內容列表。
sanitize_comment_cookies
HTTP請求讀取cookies后執行此動(dòng)作函數。
send_headers
在WordPress主函數wp中發(fā)送基本HTTP頁(yè)眉后執行此動(dòng)作函數。函數接收的參數:引用全局變量$wp對象的數組。
shutdown
頁(yè)面內容輸出完畢后執行此動(dòng)作函數。
wp
在WordPress主函數wp中解析查詢(xún)、頁(yè)面加載完畢后,執行模板前,執行此動(dòng)作函數。函數接收的參數:引用全局變量$wp對象的數組。
聯(lián)系客服