深入理解 WordPress Hook 的原理和使用方法


今天我们要说的 Hook,不是童话故事里面,一直手变成了钩子的虎克船长,而是让 WordPress 变得灵活的 Hook 机制。WordPress Hook 可以让我们不用修改模板就能改变页面上面的功能或内容。

什么是 WordPress Hook

如果我们把页面看作一个墙壁,Hook 就是墙壁上的挂钩,把衣服,背包挂到墙壁上,墙壁上就有了这些东西,就不再是一个空白的墙壁了。

而在页面中,我们挂上去的不是衣服或背包,而是显示内容的一些功能函数,把这些功能函数,挂载到页面中定义好的 Hook 上,页面中就能显示出来相应的内容。加载这些功能函数的方法是 add_actionadd_filter ,具体使用方法见 ‘把功能加载到主题模板中’ 部分,转一张图可能会更明白一点。

WordPress Hook 在主题中的位置

Hook 可以放到页面中的任何位置,今天我们就拿我开发 WordPress主题时常用的框架来说吧,其中有两个 Hook,一个在页面内容之前,一个在页面内容之后。

do_action('mx_page_before'); //页面内容之前
do_action('mx_page_after'); //页面内容之后 

通过 Hook 把功能加载到主题模板中

模板中有了 Hook,我们就可以把功能加载到模板中了,比如,我需要在页面前面显示一个面包屑导航,而页面可能有很多模板,这时候一个一个区修改虽然也能达到目的,但是却浪费了不少功夫,用 Hook 几段代码就搞定了。

/* 显示面包屑导航 */
function wizhi_show_breadcrumb() {
 if ( function_exists( 'yoast_breadcrumb' ) ) {
 yoast_breadcrumb( '<p class="breadcrumbs">当前位置:', '</p>' );
 }
}
add_action( 'mx_post_before', 'wizhi_show_breadcrumb' );
add_action( 'mx_page_before', 'wizhi_show_breadcrumb' );
  • 分享:
评论
还没有评论
    发表评论 说点什么