WordPress插件开发实例--(01)

很多朋友来我这里,可能真的会很失望了,因为——看不懂!囧。相信我,我如果写每个人能看懂的东西,那真的是很难看的,你们看我侧栏上的热门文章列表,还是以技术文章居多,就说明了一个问题,我写技术文章还对很少数的人能有所助益,我如果写大众化的文章,那就是完全的废物了。

所以,我宁愿读者少一点,也不愿做个没用的人。

现在,技术书籍的市场上,蔓延着一种浮躁的风气,经典的书不多,大都是些媚俗的技术书籍,《XXXX实例教程》就是一大类,说到这里,你就发现了,我在技术文章领域是媚俗的。这类书籍永远不会放在书架上长久保存,看过就扔,看过的人马上会意识到,这是没有价值的书。但是,这类书,还是可以让入门级选手有个感性认识的。考虑到博客文章本身的特点,比如时效性,片面性,博客还是比较适合发表这类文章的。

经典文章由大师来写,这种看过就算的文章,就由我来写吧。

此系列文章,又是一个漫漫长征路,因为,我的计划又是很宏伟壮阔的,这也符合我的性格——虎头蛇尾。关注这个系列的文章,你将会看到许多插件的运行原理,一部分插件的编写过程,构思过程,实际编码过程,调试过程,发布过程等等。我的理想是很伟大的——看过此系列,插件开发不再神秘,人人皆可动手。

Add Bottem Info

大家在我的帖子也底部,应该会看到一个灰色的方框,里面显示了文章的标题,还有永久链接,版权声明等等东西,今天,要分析的实例,就是这个。

在文章中加入版权信息,可以保护自己的版权。当然,这个东西不光是加入版权信息,还可以加入各类讯息,只要你往里写就行。添加这一类的信息,有多种办法,最傻的,每篇文章写一个,很汗。然后是稍微好点的,写在模板里面,single.php,但是呢,换模板就不行了,又要重来,而且不懂HTML,PHP是比较困难的。最后,就是用插件,不但可以一劳永逸,而且,还可以给别人分享,以上呢,就是插件的成因了。

WordPress是一个事件触发的系统,我们写插件基本上依赖的也是WordPress内部的事件来触发我们自定义的动作。

WordPress事件,能够触发两种动作,一种,就叫动作(Action),就是说某件事情发生了,能诱发一个动作,写插件的时候,你就可以在这个动作发生的时候,做一些自定义的事情。

另一种呢,叫做过滤器(Filter),就是说某件事情发生的时候,诱发一个动作的同时,把相关的数据都传送过来,允许你对数据进行过滤,变更等。

看过源代码的都知道,这两者的实现机制其实是一模一样的,具体运行的代码都是同一段代码,所以说,WordPress插件一般选用两种中的一种来进行开发,但是并非非得用其中一种,就不能用另一种实现。其选择原则,一半就是方便,符合逻辑,好理解,易管理。

然后来看看这个插件的本质是什么,就是在显示文章信息的时候,后面附加一段文字。自然而然的,我们想到了过滤器,将文章读入,然后附加一段文字,再把修改后的东西输出。(当然,你硬是要用Action来做这个事情也没什么不可以,这个就当成读者自己思考的题目吧,用Action怎么做这个事情呢?)

好了,既然知道了是要用一个能过滤文章内容的Filter,那么我们就去把它找出来吧。到哪里找呢?

http://codex.wordpress.org/Plugin_API/Filter_Reference

没错,正是官方文档。这不是最好的找寻之处,最好的在源代码里。但是这是最方便的。足够用来开发插件了。

我们知道了要用的这个过滤器叫做the_content。

然后,我们就要动手开发了。(有些东西不想重复说了,就是一些ABC,可以看看插件开发API,那是我翻译的文档。)

首先,准备好要插入的文字,可以先用个普通网页把东西调试好,然后,写成字符串的模样。

1
2
3
4
5
6
7
8

';
$bottem_string .= '作者:' . get_the_author() . '';
$bottem_string .= '原文链接:' . get_the_title() . '';
$bottem_string .= '' . get_bloginfo('name') . '》版权所有,转载时必须以链接形式注明作者和原始出处及本声明。';
$bottem_string .= '';
?>

就像上面的样子。

然后,我们来写一个函数,把这些东西放进去。

函数内部的东西,我就不赘述了,要做的就是将上面的串,连接到content后面。

最后,就是将这个过滤器,跟the_content这个Filter挂钩(Hook)。

到此,一个插件,就算完成了,你看到这里,完全可以自己动手试试看的。

当然,一个插件的完成,还需要考虑一些因素的,以后再找机会说吧,感兴趣,你可以从代码里看。

插件下载

http://blog.charlestang.org/downdown/add-bottom-info.rar