欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解析WordPress中函數(shù)鉤子hook的作用及基本用法

 更新時(shí)間:2015年12月22日 15:48:34   作者:斌果  
這篇文章主要介紹了解析WordPress中函數(shù)鉤子hook的作用及基本用法,hook是WordPress中調(diào)用函數(shù)的重要用法,也是插件開發(fā)的基礎(chǔ),需要的朋友可以參考下

WordPress 的插件機(jī)制實(shí)際上只的就是這個(gè) Hook 了,它中文被翻譯成鉤子,允許你參與 WordPress 核心的運(yùn)行,是一個(gè)非常棒的東西,下面我們來(lái)詳細(xì)了解一下它。
鉤子分類

鉤子分為兩種,一種叫做動(dòng)作(action),還有一種叫做過(guò)濾器(filter)。這兩種鉤子實(shí)現(xiàn)原理基本一樣,后邊會(huì)講到,使用上的區(qū)別在于過(guò)濾器有返回值,而動(dòng)作沒有。

動(dòng)作的理念是讓你在一種情況或者一個(gè)特別的位置執(zhí)行一些函數(shù),比如發(fā)送一封郵件等;過(guò)濾器則是讓你修改 WordPress 核心需要用到的一個(gè)值,然后 WordPress 再用這些值做一些事情,比如函數(shù)的返回值等。

動(dòng)作鉤子

wp_head 是一個(gè)很常用的動(dòng)作鉤子,在開發(fā)主題過(guò)程中,開發(fā)者都會(huì)在 head 標(biāo)簽里加上 wp_head() 函數(shù),事實(shí)上,正是這個(gè)函數(shù)調(diào)用了 wp_head 鉤子。

如果插件開發(fā)者想要在 head 標(biāo)簽里添加一句話,就可以使用 wp_head 鉤子,下邊是個(gè)簡(jiǎn)單的例子。

//在 head 標(biāo)簽添加一些內(nèi)容
function Bing_add_head_tag(){
  echo '添加內(nèi)容';
}
add_action( 'wp_head', 'Bing_add_head_tag' );

添加代碼后,查看前臺(tái)的網(wǎng)頁(yè)源代碼,就能在 head 標(biāo)簽里看到我們添加的內(nèi)容了。

20151222154540066.png (437×83)

上邊是一個(gè)簡(jiǎn)單的例子,只是打印了一句話。利用這個(gè)鉤子,我們還可以做一個(gè)遇到 404 頁(yè)面給管理員發(fā)送一封郵件的插件,下邊簡(jiǎn)單的寫了一個(gè)。

//遇到 404 頁(yè)面給管理員發(fā)送郵件
function Bing_404_page_mail(){
  if( !is_404() ) return;//如果不是 404 頁(yè)面就退出函數(shù)
  $to = get_option( 'admin_email' );//獲取管理員地址
  $subject = '遇到 404 頁(yè)面啦!';//郵件標(biāo)題
  $message = '404 頁(yè)面的地址:http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];//郵件內(nèi)容
  wp_mail( $to, $subject, $message );//發(fā)送郵件
}
add_action( 'wp_head', 'Bing_404_page_mail' );

過(guò)濾器鉤子

根據(jù)我的親身經(jīng)歷,可能過(guò)濾器鉤子會(huì)難理解些,尤其對(duì)不熟悉 PHP 的人來(lái)說(shuō)。

過(guò)濾器鉤子可以讓你改一些東西的值,過(guò)濾器回調(diào)函數(shù)會(huì)接受一個(gè)參數(shù),這就是當(dāng)前的值。還記得那個(gè)用來(lái)調(diào)用文章內(nèi)容的 the_content() 函數(shù)吧,這個(gè)函數(shù)就提供了一個(gè) the_content 過(guò)濾器。

給 the_content 鉤子添加一個(gè)函數(shù),這個(gè)函數(shù)需要接收一個(gè)參數(shù),這個(gè)參數(shù)就是當(dāng)前的值。

//文章內(nèi)容全部鏈接新窗口打開
function Bing_autoblank( $content ){//$content 變量就是文章內(nèi)容,因?yàn)槠渌^(guò)濾器也要過(guò)濾,所以這個(gè)內(nèi)容可能是經(jīng)過(guò)其它函數(shù)過(guò)濾的
  $content = str_replace( '<a', '<a target="_blank"', $content );//添加 target="_blank"
  return $content;//必須要把過(guò)濾后的內(nèi)容返回回去,否則值就丟了
}
add_filter( 'the_content', 'Bing_autoblank' );

鉤子原理

事實(shí)上,在調(diào)用 add_action() 和 add_filter() 的時(shí)候,只是向 $wp_filter 全局變量添加了一個(gè)數(shù)組元素,還要說(shuō)的就是動(dòng)作和過(guò)濾器是公用的一個(gè)全局變量,也就是說(shuō),過(guò)濾器和動(dòng)作是不能重名的。

當(dāng)調(diào)用 do_action() 的時(shí)候,會(huì)查找 $wp_filter 全局變量中都有哪些添加到此動(dòng)作的函數(shù),循環(huán)執(zhí)行即可。

apply_filters() 比 do_action() 多了一個(gè)步奏,就是每次調(diào)用函數(shù)時(shí)還要接收這個(gè)函數(shù)的返回值,最后把經(jīng)過(guò)多次過(guò)濾的值返回出去,供使用。

獲取當(dāng)前鉤子列表
WordPress 的動(dòng)作和過(guò)濾器是插件機(jī)制的核心部分,允許你在特定的地方主動(dòng)添加自己需要執(zhí)行的動(dòng)作,一般使用 add_action() 和 add_filter() 函數(shù)掛載函數(shù)。

這些鉤子被儲(chǔ)存在 $wp_filter 全局變量里,所以,要獲取鉤子列表,可以直接獲取 $wp_filter 全局變量。

<pre><?php var_dump( $GLOBALS['wp_filter'] ); ?></pre>

上邊的代碼會(huì)打印出鉤子列表。

20151222154645343.png (388×432)

相關(guān)文章

  • php使用gettimeofday函數(shù)返回當(dāng)前時(shí)間并存放在關(guān)聯(lián)數(shù)組里

    php使用gettimeofday函數(shù)返回當(dāng)前時(shí)間并存放在關(guān)聯(lián)數(shù)組里

    這篇文章主要介紹了php使用gettimeofday函數(shù)返回當(dāng)前時(shí)間并存放在關(guān)聯(lián)數(shù)組里的方法,涉及php中g(shù)ettimeofday函數(shù)的使用技巧,需要的朋友可以參考下
    2015-03-03
  • php select,radio和checkbox默認(rèn)選擇的實(shí)現(xiàn)方法

    php select,radio和checkbox默認(rèn)選擇的實(shí)現(xiàn)方法

    radio和checkbox默認(rèn)選擇的實(shí)現(xiàn)方法,大家參考下原理就知道了,不論asp,asp.net,jsp都是這個(gè)原理。
    2010-05-05
  • php下刪除一篇文章生成的多個(gè)靜態(tài)頁(yè)面

    php下刪除一篇文章生成的多個(gè)靜態(tài)頁(yè)面

    php自定義函數(shù)之刪除一篇文章生成的多個(gè)靜態(tài)頁(yè)面,可能有多頁(yè)的文章,都是需要考慮到的。
    2010-08-08
  • 深入extjs與php參數(shù)交互的詳解

    深入extjs與php參數(shù)交互的詳解

    本篇文章是對(duì)extjs與php的參數(shù)交互進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • PHP中substr()與explode()函數(shù)用法分析

    PHP中substr()與explode()函數(shù)用法分析

    這篇文章主要介紹了PHP中substr()與explode()函數(shù)用法分析,以實(shí)例的形式較為詳細(xì)的講述了substr()與explode()函數(shù)處理字符串的技巧,是字符串操作中使用頻率比較高的函數(shù),具有一定的實(shí)用價(jià)值,需要的朋友可以參考下
    2014-11-11
  • php中的常見攻擊解讀

    php中的常見攻擊解讀

    這篇文章主要介紹了php中的常見攻擊解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 掌握PHP垃圾回收機(jī)制詳解

    掌握PHP垃圾回收機(jī)制詳解

    這篇文章主要介紹了PHP垃圾回收機(jī)制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • php計(jì)算兩個(gè)日期相差天數(shù)的方法

    php計(jì)算兩個(gè)日期相差天數(shù)的方法

    這篇文章主要介紹了php計(jì)算兩個(gè)日期相差天數(shù)的方法,實(shí)例分析了php操作日期的技巧,需要的朋友可以參考下
    2015-03-03
  • 關(guān)于PHP方法參數(shù)的那一些事

    關(guān)于PHP方法參數(shù)的那一些事

    這篇文章主要給大家介紹了關(guān)于PHP方法參數(shù)的那一些事,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • PHP遍歷數(shù)組最常用的7種方式總結(jié)

    PHP遍歷數(shù)組最常用的7種方式總結(jié)

    在PHP中,遍歷數(shù)組有多種方式可以選擇,本文給大家分享了7種最常用的遍歷方式,文中有詳細(xì)的代碼示例供大家參考,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-10-10

最新評(píng)論