《PHP實例:解析WordPress中函數(shù)鉤子hook的作用及基本用法》要點:
本文介紹了PHP實例:解析WordPress中函數(shù)鉤子hook的作用及基本用法,希望對您有用。如果有疑問,可以聯(lián)系我們。
WordPress 的插件機制實際上只的就是這個 Hook 了,它中文被翻譯成鉤子,允許你參與 WordPress 核心的運行,是一個非常棒的東西,下面我們來詳細了解一下它.
鉤子分類PHP教程
鉤子分為兩種,一種叫做動作(action),還有一種叫做過濾器(filter).這兩種鉤子實現(xiàn)原理基本一樣,后邊會講到,使用上的區(qū)別在于過濾器有返回值,而動作沒有.PHP教程
動作的理念是讓你在一種情況或者一個特別的位置執(zhí)行一些函數(shù),比如發(fā)送一封郵件等;過濾器則是讓你修改 WordPress 核心需要用到的一個值,然后 WordPress 再用這些值做一些事情,比如函數(shù)的返回值等.PHP教程
動作鉤子PHP教程
wp_head 是一個很常用的動作鉤子,在開發(fā)主題過程中,開發(fā)者都會在 head 標簽里加上 wp_head() 函數(shù),事實上,正是這個函數(shù)調(diào)用了 wp_head 鉤子.PHP教程
如果插件開發(fā)者想要在 head 標簽里添加一句話,就可以使用 wp_head 鉤子,下邊是個簡單的例子.PHP教程
//在 head 標簽添加一些內(nèi)容 function Bing_add_head_tag(){ echo '添加內(nèi)容'; } add_action( 'wp_head', 'Bing_add_head_tag' );
添加代碼后,查看前臺的網(wǎng)頁源代碼,就能在 head 標簽里看到我們添加的內(nèi)容了.
PHP教程
PHP教程
上邊是一個簡單的例子,只是打印了一句話.利用這個鉤子,我們還可以做一個遇到 404 頁面給管理員發(fā)送一封郵件的插件,下邊簡單的寫了一個.
PHP教程
//遇到 404 頁面給管理員發(fā)送郵件 function Bing_404_page_mail(){ if( !is_404() ) return;//如果不是 404 頁面就退出函數(shù) $to = get_option( 'admin_email' );//獲取管理員地址 $subject = '遇到 404 頁面啦!';//郵件標題 $message = '404 頁面的地址:http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];//郵件內(nèi)容 wp_mail( $to, $subject, $message );//發(fā)送郵件 } add_action( 'wp_head', 'Bing_404_page_mail' );
過濾器鉤子PHP教程
根據(jù)我的親身經(jīng)歷,可能過濾器鉤子會難理解些,尤其對不熟悉 PHP 的人來說.PHP教程
過濾器鉤子可以讓你改一些東西的值,過濾器回調(diào)函數(shù)會接受一個參數(shù),這就是當前的值.還記得那個用來調(diào)用文章內(nèi)容的 the_content() 函數(shù)吧,這個函數(shù)就提供了一個 the_content 過濾器.PHP教程
給 the_content 鉤子添加一個函數(shù),這個函數(shù)需要接收一個參數(shù),這個參數(shù)就是當前的值.PHP教程
//文章內(nèi)容全部鏈接新窗口打開 function Bing_autoblank( $content ){//$content 變量就是文章內(nèi)容,因為其它過濾器也要過濾,所以這個內(nèi)容可能是經(jīng)過其它函數(shù)過濾的 $content = str_replace( '<a', '<a target="_blank"', $content );//添加 target="_blank" return $content;//必須要把過濾后的內(nèi)容返回回去,否則值就丟了 } add_filter( 'the_content', 'Bing_autoblank' );
鉤子原理PHP教程
事實上,在調(diào)用 add_action() 和 add_filter() 的時候,只是向 $wp_filter 全局變量添加了一個數(shù)組元素,還要說的就是動作和過濾器是公用的一個全局變量,也就是說,過濾器和動作是不能重名的.PHP教程
當調(diào)用 do_action() 的時候,會查找 $wp_filter 全局變量中都有哪些添加到此動作的函數(shù),循環(huán)執(zhí)行即可.PHP教程
apply_filters() 比 do_action() 多了一個步奏,就是每次調(diào)用函數(shù)時還要接收這個函數(shù)的返回值,最后把經(jīng)過多次過濾的值返回出去,供使用.PHP教程
獲取當前鉤子列表
WordPress 的動作和過濾器是插件機制的核心部分,允許你在特定的地方主動添加自己需要執(zhí)行的動作,一般使用 add_action() 和 add_filter() 函數(shù)掛載函數(shù).PHP教程
這些鉤子被儲存在 $wp_filter 全局變量里,所以,要獲取鉤子列表,可以直接獲取 $wp_filter 全局變量.PHP教程
<pre><?php var_dump( $GLOBALS['wp_filter'] ); ?></pre>
上邊的代碼會打印出鉤子列表.
PHP教程
PHP教程
《PHP實例:解析WordPress中函數(shù)鉤子hook的作用及基本用法》是否對您有啟發(fā),歡迎查看更多與《PHP實例:解析WordPress中函數(shù)鉤子hook的作用及基本用法》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/8175.html