解析WordPress中函数钩子hook的作用及根本用法

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 函数 钩子 hook PHP编程
版权声明:本文为 安达网络工作室 转载文章,如有侵权请联系我们及时删除。
相关文章
wordpress全局变量$wpdb在哪里进行初始化申明

wordpress操作数据库用一个全局变量$wpdb来进行各种操作,应用的时分先在函数申明global $wpdb,而后调用它...

WordPress中制造导航菜单的PHP外围办法解说

WordPress 3.0 引入导航菜单性能, 让页面的导航和链接的治理变得简略易用. WP 向用户提供了菜单治理页面和多...

如何应用Wordpress来撰写你的博客

要害字形容:博客 撰写 应用 如何 文章 能够 Wordpress 性能 这里 在上一次教程中引见了 Wordpress 的后盾...

优化WordPress分类链接及WP-No-Category-Base的卸载办法

默许状况下,WordPress分类的永世链接是这样的比方本站的技术文章分类。 exehack.net/category/my-article/...

wordpress弱小的网站建立cformsII留言板插件

最近在做一个客户的企业网站建立时,需求往数据库提交信息的表单页面,然而Wordpress自带的评论性能来做的话...

WordPress中的shortcode短代码性能应用详解

WordPress 从 2.5 的版本开端,添加了一个 shortcode (短代码) API ,相似于 BBS 上的 BBCode , shortcode ...

需求提交

客服服务