WP微博计划 第一课,Widget的代码结构
咱这现学现卖,写个小教程。希望能够帮到那些想学而又读不了那些像树皮一样没味道还无聊的文档的同学们。
我的口号:拒绝高深,用常识解读一切。
我们只需要最少的知识,就可以做很多事。Come on with me~
Wordpress是php写的一个博客站点,它很好地包装了各种底层函数,使得你可以所见即所得地发布博客文章。你大概也接触过一点程序,可是用wordpress(wp)你根本就不用接触什么php,不用接触mysql,一切似乎都不存在。所以,wp的架构很好呀~~
widget是啥捏,说白了就是一个小框可以拖到主页的侧边栏上,并在上面显示一些东西。而我的目标是做一个微博的发布站,我想用widget来做。所以我得先观察一下widget有啥特征:
从安装开始:我上传一个php文件到目录下,wp就识别了。
应用:在widget里,把要用的widget拖到侧边就行了。
修改:控制台里,不同的widget有自己的控制界面。可以修改,保存。
显示:在首页里,就有了。
好了,功能分析完了。自己琢磨一下这都要什么功能?
wp能识别widget的代码,说明widget代码有自己的说明格式。能够在widget一栏中显示,说明widget代码有办法表明这是一个widget。不同的widget有自己的控制界面,显然,我们要自己写一个控制界面的功能。wp会按照我们的设置在首页里显示这个widget。OK,分析好咯。这就是widget的功能模块。真的!就是这样,我们自己都想的到!
好!之前是我自己琢磨的widget的工作方式。下面我们对比一下真正的widget的工具方式。
widget是plugin(插件),它按插件的格式来描述自己。所以在wp的控制界面里,widget最初是显示在plugin中的。widget重载了WP_Widget这个类,这个类是所有widget的基类。这个基类有三个非常重要的函数,实现了我之前猜测的三个功能:
显示:widget()
配置界面:form()
更新: update()
但是,细心的你会发现,这还是plugin啊,怎么能被识别成widget呢?聪明!明显是要注册成widget。有函数register_widget。注册时机呢?同样是wp的hook机制。add_action widget_inits。
—————-注解:hook机制——————
有时,我希望系统在一个我希望的时刻调用我的函数。这种机制就叫HOOK(拦截)
比如我想在干活累的时侯让饮水机自动送水过来。于是HOOK时机就是干活累了的时侯,而调用的函数就是送水。发现了吧,如果HOOK太频繁,由于不停地切换函数,会影响系统性能。有体会:想某某时,就干不了活了。或者如果网游被木马给偷听了,就会觉得网游有一点卡。现在的防木马系统也广泛使用HOOK,所以说它们也是巨慢的。典型的有N-Protect,和卡巴斯基。卡巴有n多的hook,hook到机子卡为止。对于np有兴趣的同学可以研究一下。咱们可以讨论怎么攻陷n-protect,呵呵。
———————–
第一课总结:所以,我们知道了:WP在进入admin控制界面时,首先描述插件。然后会执行widget_inits,这时如果调用了register,就会将插件注册成widget。这样我们在widget界面里就看到了自己的插件。拖动自己的插件到侧栏,然后按小三角尖进入控制界面,这时调用的是form()函数。做好修改好,点击保存,启用了update()函数。然后我们跳到了主页上去欣赏大作,wp调用的就是widget()函数来显示我们自己的widget了。
呵呵,你明白了吗。很简单吧,有啥不懂的,尽管问。我也不懂,但我会和你讨论。
再说一句,用常识解读一切,不要以为世界很深奥。
下一课预告:Let’s say our words in the Widget!
先顶一个,后续再看
要常来顶啊,呵呵。