WordPress 插件机制的简单用法和原理(Hook 钩子)
WordPress 的插件机制实际上只的就是这个 Hook 了,它中文被翻译成钩子,允许你参与 WordPress 核心的运行,是一个非常棒的东西,下面我们来详细了解一下它。
PS:本文只是简单的总结一下,更多用法还是要参考文中给出的函数。
钩子分类
钩子分为两种,一种叫做动作(action),还有一种叫做过滤器(filter)。这两种钩子实现原理基本一样,后边会讲到,使用上的区别在于过滤器有返回值,而动作没有。
动作的理念是让你在一种情况或者一个特别的位置执行一些函数,比如发送一封邮件等;过滤器则是让你修改 WordPress 核心需要用到的一个值,然后 WordPress 再用这些值做一些事情,比如函数的返回值等。
动作钩子
wp_head 是一个很常用的动作钩子,在开发主题过程中,开发者都会在 head 标签里加上 wp_head() 函数,事实上,正是这个函数调用了 wp_head 钩子。
如果插件开发者想要在 head 标签里添加一句话,就可以使用 wp_head 钩子,下边是个简单的例子。
1 2 3 4 5 |
|
添加代码后,查看前台的网页源代码,就能在 head 标签里看到我们添加的内容了。
上边是一个简单的例子,只是打印了一句话。利用这个钩子,我们还可以做一个遇到 404 页面给管理员发送一封邮件的插件,下边简单的写了一个。
1 2 3 4 5 6 7 8 9 |
|
更多关于 add_action() 函数的内容:《 WordPress 函数:add_action()(添加动作) 》
过滤器钩子
根据我的亲身经历,可能过滤器钩子会难理解些,尤其对不熟悉 PHP 的人来说。
过滤器钩子可以让你改一些东西的值,过滤器回调函数会接受一个参数,这就是当前的值。还记得那个用来调用文章内容的 the_content() 函数吧,这个函数就提供了一个 the_content 过滤器。
给 the_content 钩子添加一个函数,这个函数需要接收一个参数,这个参数就是当前的值。
1 2 3 4 5 6 |
|
更多关于 add_filter() 函数的内容:《 WordPress 函数:add_filter()(添加过滤器) 》
调用钩子
WordPress 核心是怎么调用这些钩子的就不再这篇文章了,可以参考下边两篇文章。
动作钩子:《 WordPress 函数:do_action()(执行动作) 》
过滤器钩子:《 WordPress 函数:apply_filters()(创建过滤器) 》
钩子原理
事实上,在调用 add_action() 和 add_filter() 的时候,只是向 $wp_filter 全局变量添加了一个数组元素,还要说的就是动作和过滤器是公用的一个全局变量,也就是说,过滤器和动作是不能重名的。
当调用 do_action() 的时候,会查找 $wp_filter 全局变量中都有哪些添加到此动作的函数,循环执行即可。
apply_filters() 比 do_action() 多了一个步奏,就是每次调用函数时还要接收这个函数的返回值,最后把经过多次过滤的值返回出去,供使用。
Reference from : http://www.endskin.com/hook.html
转载于:https://www.cnblogs.com/zhangchenliang/p/4000219.html
WordPress 插件机制的简单用法和原理(Hook 钩子)相关推荐
- 解析 WordPress 插件机制
一直对软件的组件.插件架构非常感兴趣,我认为现在开发任何应用程序,一定要有一个架构良好的插件机制,这样可以吸引其他人来开发插件,极大的扩充 系统的功能.Eclipse就是一个非常棒的例子,几乎你想什么 ...
- wordpress中remove_action、add_action、 do_action()的hook钩子都有哪些
原文地址:http://codex.wordpress.org/Plugin_API/Action_Reference muplugins_loaded After must-use plugins ...
- Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结
Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结 1. 微内核与插件的优点1 2. 插件的注册与使用2 2.1. Ioc容器中注册插件2 2.2. 启动器微内核启动3 ...
- MyBatis 源码分析 - 插件机制
1.简介 一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展.这样的好处是显而易见的,一是增加了框架的灵活性.二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作.以 My ...
- python做插件应用_Python插件机制实现详解
插件机制是代码/功能反向依赖注入到主体程序的一种方法,编译型语言通过动态加载动态库实现插件.对于Python这样的脚本语言,实现插件机制更简单. 机制 Python的__import__方法可以动态地 ...
- python插件使用教程_Python插件机制实现详解
插件机制是代码/功能反向依赖注入到主体程序的一种方法,编译型语言通过动态加载动态库实现插件.对于Python这样的脚本语言,实现插件机制更简单. 机制 Python的__import__方法可以动态地 ...
- python加载机制_Python插件机制实现详解
插件机制是代码/功能反向依赖注入到主体程序的一种方法,编译型语言通过动态加载动态库实现插件.对于Python这样的脚本语言,实现插件机制更简单. 机制 Python的__import__方法可以动态地 ...
- 使用Mailgun WordPress插件增加订户
Mailgun插件的新列表订阅功能 Mailgun WordPress插件一直是简单,轻松,经济地向WordPress服务器添加出站电子邮件支持的简单方法,而无需担心运行自己的SMTP服务的麻烦. 现 ...
- 如何安装 WordPress 插件?我告诉你2种常用方法
插件是 WordPress 生态系统的命脉. 它们使 CMS(内容管理系统)在同行中独一无二,因为它们为平台带来了绝对的可扩展性. 许多用户因为插件而被WordPress吸引,但不知道如何安装 这个 ...
- Wordpress插件检测机制原理
Wordpress插件界面里,这些用户自定义的plugin是从哪里来的? 在Wordpress目录下面有一个文件夹叫做plugins,这里面的所有文件都成为Wordpress扫描plugin的cand ...
最新文章
- Asp.net 2.0 C#实现压缩/解压功能
- 关于无法创建aps.web项目的解决办法
- ajax文件上传报400,js ajaxfileupload.js上传报错的解决方法
- 【Qt】Qt学习资料汇总
- centos6mysql编译安装_centos6编译安装MySQL
- 回归统计在DMP中的实战应用
- [css] 你有没有自己写过一套UI库?说下遇到哪些难点?
- java四舍五入自己写_java提高篇-----详解java的四舍五入与保留位
- 读《刘帅:在失望中寻找希望》有感
- PHP数组实现菜单无限极分类
- 常见的图标库有哪些?
- 易语言游戏选服务器,网吧游戏菜单服务器含服务器端和客户端
- SOUI GDI+渲染引擎下的字体特效,抛砖引玉
- Win10文件夹Shift+右键菜单添加打开管理员Powershell窗口
- 【PCB专题】PCB板卡上的UL标识是什么?
- 钉钉显示服务器升级是什么意思,服务器升级自动通知钉钉群并报告环境功能
- spring cloud: TX-LCN解决分布式事务
- flash制作打地鼠游戏代码,打地鼠游戏编程代码
- htc 8x android,htc 8x的usb驱动下载
- r语言 siar 代码_sair方法及R操作入门——稳定同位素之食物来源比例分析
热门文章
- 【三维路径规划】基于matlab改进差分算法多无人机协同三维路径规划【含Matlab源码 169期】
- 【VRP】基于matlab禁忌搜索算法求解车辆路径规划问题【含Matalb源码 158期】
- 傅里叶变换对照表_傅里叶分析推导
- 快二游戏数据分析_1.更快的数据分析
- 超轻粘土机器人_超轻粘土 | 天近秋,背上行囊,捎上橡果,我们出发去远方
- php mysql账号注册_php mysql用户注册登陆代码_PHP教程
- sql统计各科成绩大于平均分的人_SQL第三关:汇总分析
- beta分布_浅谈分布之分布(beta分布)贝叶斯分析之1 精选
- IO流(1)--文件流及其原理
- topcoder srm 440 div1