今天我們要說(shuō)的 Hook,不是童話故事里面,一直手變成了鉤子的虎克船長(zhǎng),而是讓 WordPress 變得靈活的 Hook 機(jī)制。WordPress Hook 可以讓我們不用修改模板就能改變頁(yè)面上面的功能或內(nèi)容。
什么是 WordPress Hook
如果我們把頁(yè)面看作一個(gè)墻壁,Hook 就是墻壁上的掛鉤,把衣服,背包掛到墻壁上,墻壁上就有了這些東西,就不再是一個(gè)空白的墻壁了。
而在頁(yè)面中,我們掛上去的不是衣服或背包,而是顯示內(nèi)容的一些功能函數(shù),把這些功能函數(shù),掛載到頁(yè)面中定義好的?Hook?上,頁(yè)面中就能顯示出來(lái)相應(yīng)的內(nèi)容。加載這些功能函數(shù)的方法是 add_action 或 add_filter ,具體使用方法見 ‘把功能加載到主題模板中’ 部分,轉(zhuǎn)一張圖可能會(huì)更明白一點(diǎn)。

WordPress Hook 在主題中的位置
Hook 可以放到頁(yè)面中的任何位置,今天我們就拿我開發(fā) WordPress主題時(shí)常用的框架來(lái)說(shuō)吧,其中有兩個(gè) Hook,一個(gè)在頁(yè)面內(nèi)容之前,一個(gè)在頁(yè)面內(nèi)容之后。
do_action('mx_page_before'); //頁(yè)面內(nèi)容之前
do_action('mx_page_after'); //頁(yè)面內(nèi)容之后
通過(guò) Hook 把功能加載到主題模板中
模板中有了 Hook,我們就可以把功能加載到模板中了,比如,我需要在頁(yè)面前面顯示一個(gè)面包屑導(dǎo)航,而頁(yè)面可能有很多模板,這時(shí)候一個(gè)一個(gè)區(qū)修改雖然也能達(dá)到目的,但是卻浪費(fèi)了不少功夫,用 Hook 幾段代碼就搞定了。
/* 顯示面包屑導(dǎo)航 */
function wizhi_show_breadcrumb() {
if ( function_exists( 'yoast_breadcrumb' ) ) {
yoast_breadcrumb( '<p class="breadcrumbs">當(dāng)前位置:', '</p>' );
}
}
add_action( 'mx_post_before', 'wizhi_show_breadcrumb' );
add_action( 'mx_page_before', 'wizhi_show_breadcrumb' );


