最新消息:Excel无乱码转CSV,由于工作原因很少更新博客和回复大家的评论,非常抱歉。

WordPress插件开发教程–钩子(hooks)

本节内容

  • 为动作钩子创建动作
  • 为过滤器钩子创建过滤器
  • 使用 PHP 类里面的钩子
  • 为插件添加自定义钩子
  • 寻找 WordPress 中的钩子

钩子是 WordPress 的精髓。他们允许插件开发人员钩进 WordPress 工作流程内部来改变它的工作,而不用直接修改核心代码。这就使得用户可以方便的升级到 WordPress 的新版本而不需要修改一行代码。

如果一个开发人员修改了核心代码,这些改动在 WordPress 下一次升级的时候就会消失。升级会覆盖这些改动。使用钩子让你能够在核心以外的目录中单独开发插件,这就在升级时保证了插件代码的安全。

没有钩子,插件就没办法改变 WordPress 的功能了。本节介绍的钩子系统会贯穿整个教程,同时也会在几乎每一个插件的开发中用到。在你学会了钩子的用法后,你就会明白为什么 WordPress 这个平台这么强大,并有上千个插件供几百万用户使用了。

WordPress 主要有两种类型的钩子:动作钩子和过滤器钩子(action hooks and filter hooks )。第一个使得你可以在一个特定时刻上执行一个函数,第二个使得你可以操作通过钩子的输出。

钩子不是仅仅针对插件的。WordPress 内部也使用钩子。如果你浏览核心代码,你就能见到很多 WordPress 自己钩自己的例子了。

 

动作钩子 ( actions ) – do_action()

动作钩子让你可以在 WordPress 加载过程中或者当某个事件发生的特定时刻触发一个函数。例如:你可能希望当 WordPress 第一次加载一个页面或者保存一篇文章时执行一个函数。

你需要理解 do_action() 函数。当钩进 WordPress 中时,你的插件不会直接调用这个函数;但是你的插件几乎都会间接的使用它。

<?php
do_action( $tag, $arg = '' );
?>
  • $tag — 动作钩子的名称
  • $arg — 传递给已注册的动作的值。它看起来像一个单独的参数,但通常都不是这样的。动作钩子可以传递任何个数的参数,或者根本不传参数。对特殊的钩子,你需要查看 WordPress 的源码,因为参数个数在每个钩子的基础改变。下面是一个具有多参数的动作钩子的例子:
<?php
do_action( $tag, $arg_1, $arg_2, $arg_3 );
?>

下面看看一个叫做 wp_head 的钩子是怎么出现在 WordPress 中的。这个钩子出现在前台的 <head> 里面。 WordPress 和插件经常用这个钩子来添加 meta 信息,样式表,和 js 脚本。

<?php
do_action('wp_head');
?>

当这段代码在 WordPress 中执行时,它会寻找任何为 wp_head 动作钩子注册的动作。然后按照特殊顺序执行它们。如你所见,它名叫 wp_head 但是没有传递额外的参数。动作钩子通常都这样。下面是有两个额外参数的动作钩子的例子:

<?php
do_action( 'save_post', $post_ID, $post );
?>

这个 save_post 的钩子传递两个参数,一个 $post_ID,一个 $post。

转载请注明:嗨酷哥,有你更酷! » WordPress插件开发教程–钩子(hooks)

与本文相关文章

发表我的评论

取消评论
表情 插代码

Hi,您需要填写昵称和邮箱!

  • 必填项
  • 必填项