WordPress 的插件机制实际上只的就是这个 Hook 了,它中文被翻译成钩子,容许你参加 WordPress 外围的运转,是一个十分棒的货色,上面咱们来具体理解一下它。
钩子分类
钩子分为两种,一种叫做举措(action),还有一种叫做过滤器(filter)。这两种钩子完成原理根本一样,后边会讲到,应用上的区别在于过滤器有前往值,而举措没有。
举措的理念是让你在一种状况或许一个特地的地位执行一些函数,比方发送一封邮件等;过滤器则是让你修正 WordPress 外围需求用到的一个值,而后 WordPress 再用这些值做一些事件,比方函数的前往值等。
举措钩子
wp_head 是一个很罕用的举措钩子,在开发主题进程中,**都会在 head 标签里加上 wp_head() 函数,现实上,正是这个函数调用了 wp_head 钩子。
假如插件**想要在 head 标签里增加一句话,就能够应用 wp_head 钩子,下边是个简略的例子。
//在 head 标签增加一些内容 function Bing_add_head_tag(){ echo '增加内容'; } add_action( 'wp_head', 'Bing_add_head_tag' );
增加代码后,查看前台的网页源代码,就能在 head 标签里看到咱们增加的内容了。
上边是一个简略的例子,只是打印了一句话。利用这个钩子,咱们还能够做一个遇到 404 页面给治理员发送一封邮件的插件,下边简略的写了一个。
//遇到 404 页面给治理员发送邮件 function Bing_404_page_mail(){ if( !is_404() ) return;//假如不是 404 页面就加入函数 $to = get_option( 'admin_email' );//获取治理员地址 $subject = '遇到 404 页面啦!';//邮件题目 $message = '404 页面的地址:http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];//邮件内容 wp_mail( $to, $subject, $message );//发送邮件 } add_action( 'wp_head', 'Bing_404_page_mail' );
过滤器钩子
依据我的亲自经验,可能过滤器钩子会难了解些,尤其对不相熟 PHP 的人来说。
过滤器钩子能够让你改一些货色的值,过滤器回调函数会承受一个参数,这就是以后的值。还记得那个用来调用文章内容的 the_content() 函数吧,这个函数就提供了一个 the_content 过滤器。
给 the_content 钩子增加一个函数,这个函数需求接纳一个参数,这个参数就是以后的值。
//文章内容全副链接新窗口关上 function Bing_autoblank( $content ){//$content 变量就是文章内容,由于其它过滤器也要过滤,所以这个内容可能是通过其它函数过滤的 $content = str_replace( '<a', '<a target="_blank"', $content );//增加 target="_blank" return $content;//必需要把过滤后的内容前往回去,否则值就丢了 } add_filter( 'the_content', 'Bing_autoblank' );
钩子原理
现实上,在调用 add_action() 和 add_filter() 的时分,只是向 $wp_filter 全局变量增加了一个数组元素,还要说的就是举措和过滤器是专用的一个全局变量,也就是说,过滤器和举措是不能重名的。
当调用 do_action() 的时分,会查找 $wp_filter 全局变量中都有哪些增加到此举措的函数,循环执行即可。
apply_filters() 比 do_action() 多了一个步奏,就是每次调用函数时还要接纳这个函数的前往值,最初把通过屡次过滤的值前往进来,供应用。
获取以后钩子列表
WordPress 的举措和过滤器是插件机制的外围局部,容许你在特定的中央自动增加本人需求执行的举措,普通应用 add_action() 和 add_filter() 函数挂载函数。
这些钩子被贮存在 $wp_filter 全局变量里,所以,要获取钩子列表,能够间接获取 $wp_filter 全局变量。
<pre><?php var_dump( $GLOBALS['wp_filter'] ); ?></pre>
上边的代码会打印出钩子列表。
以上就是安达网络工作室关于《解析WordPress中函数钩子hook的作用及基本用法》的一些看法。更多内容请查看本栏目更多内容!
WordPress根本模板文件 一套完好的WordPress模板应至多具备如下文件: style.css : CSS(款式表)文件 index....
当然, 尚有诸位长辈也曾把以上三种计划结合一二, 以达到更宽泛的顺应度. 不过, 这厢先前在网路上搜寻许久, ...
应用Wordpress这么久不断很厌恶wordpress的文章修订和主动保留性能,也应用过超级开关插件能够制止wordpres...
函数意义详解 从以后主题调用header.php文件。是不是很简略?好吧,假如你是老手的话这里要提示一下,这里的...
本文实例总结了WordPress评论增加楼层显示的办法。分享给大家供大家参考。详细剖析如下: 第一步:要在评论...
缺点文件/{Path}/wp-includes/registration-functions.php 要害代码: —-> <?php /** * Deprecated. N...