注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

@fc_lamp

关注Web应用解决方案MySql/PHP/Python一盏名为"飞川"的灯~

 
 
 

日志

 
 

wordpress(WP)博客系统插件机制(原理)  

2012-10-26 16:23:22|  分类: Web技术-Php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一 描述(注意以下文章中出现的php文件以及代码行号、函数名与wordpress版本相关)

插件的加载其实最重要的一个部分就是插件的事件注册机制WordPress插件中的事件注册其实和Eclipse中的扩展点 Extension-Point)机制非常相像,而这种类似”插销”、”插销座”的软件插拔方式也成为了最近软件组件架构方面应用最多的实践。

事件注册过程中比较重要的几个函数分别是:do_actionadd_actionadd_filterWordPress中默认定义了很多扩 展点(也可以叫做”钩子”),或者说注册了很多系统事件(WP中的正规叫法应该是”Action Tag”),比如”admin_head”表示Admin页面的Head输出事件,”publish_post”表示发布一篇帖子的事件等等。而插件要做 的就是扩展这些扩展点,或者说挂接这些钩子,从而实现系统的扩展功能。

add_action就是通常插件扩展某个扩展点用到的函数

do_action 是扩展点本身开始执行的函数(fc_lamp:提醒即用于执行某挂载点下所有被注册了的函数)。

注以上摘自:http://www.helloyi.cn/index.php/2010/02/09/wordpress-plugin/

wordpress(WP)博客系统插件机制(原理) - fc_lamp - @fc_lamp

二 相应流程(非流程图,以下以Hello_Dolly插件为例)

任务:加载插件注册器(函数)

实例文件:wp-setting.php  72

实例代码:require (ABSPATH . WPINC . '/plugin.php');

wordpress(WP)博客系统插件机制(原理) - fc_lamp - @fc_lamp
 
 任务:加载所有可用的插件(文件)

 实例文件:wp-settion.php 203行

 实例代码:  foreach ( wp_get_active_and_valid_plugins () as $plugin )

    include_once ($plugin); 

wordpress(WP)博客系统插件机制(原理) - fc_lamp - @fc_lamp

任务:注册插件函数(注册到全局$wp_filter变量中)

实例文件:相应的插件文件,如:默认的Hello_Dolly插件(hello.php)

实例代码:add_action( 'admin_notices', 'hello_dolly' ); 此代码在Hello_Dolly插件中。

wordpress(WP)博客系统插件机制(原理) - fc_lamp - @fc_lamp

任务:执行挂载点下所有被注册了的插件函数(使用全局变量$wp_filter中注册了函数)

实例文件:/wp-admin/admin-header.php (这里以Hello_Dolly插件为例) 135行

实例代码:do_action('admin_notices');


在do_action 函数里使用了 call_user_func_array ,参考:http://www.php.net/manual/zh/function.call-user-func-array.php



ps: 《wordpress(WP)文章链接(连接、URL)重写,如何设置固定链接。》

《简单谈谈PHP的国际化问题(wordpress(WP)多语言设置)》



 
  评论这张
 
阅读(600)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017