很多朋友来我这里,可能真的会很失望了,因为——看不懂!囧。相信我,我如果写每个人能看懂的东西,那真的是很难看的,你们看我侧栏上的热门文章列表,还是以技术文章居多,就说明了一个问题,我写技术文章还对很少数的人能有所助益,我如果写大众化的文章,那就是完全的废物了。
所以,我宁愿读者少一点,也不愿做个没用的人。
现在,技术书籍的市场上,蔓延着一种浮躁的风气,经典的书不多,大都是些媚俗的技术书籍,《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,那是我翻译的文档。)
首先,准备好要插入的文字,可以先用个普通网页把东西调试好,然后,写成字符串的模样。
$bottem_string = '<div class="bottominfo">';
$bottem_string .= '<p>作者:<a href="' . get_the_author_url() . '">' . get_the_author() . '</a></p>';
$bottem_string .= '<p>原文链接:<a href="' . get_permalink(get_the_ID()) . '">' . get_the_title() . '</a></p>';
$bottem_string .= '<p><a href="' . get_bloginfo('siteurl') . '">《' . get_bloginfo('name') . '》</a>版权所有,转载时必须以链接形式注明作者和原始出处及本声明。</p>';
$bottem_string .= '</div>';
?>
就像上面的样子。
然后,我们来写一个函数,把这些东西放进去。
function add_info($content = ''){
//在这里放上上面的那些串,然后进行连接操作
}
?>
函数内部的东西,我就不赘述了,要做的就是将上面的串,连接到content后面。
最后,就是将这个过滤器,跟the_content这个Filter挂钩(Hook)。
add_filter('the_content','add_info',1,1000);
?>
到此,一个插件,就算完成了,你看到这里,完全可以自己动手试试看的。
当然,一个插件的完成,还需要考虑一些因素的,以后再找机会说吧,感兴趣,你可以从代码里看。
插件下载
http://sexywp.com/downdown/add-bottom-info.rar

为什么我下载了你的插件,然后使用了,再新建一篇文章发表,在前台看不到加的字符串呢?
“,些插件的时候,你就”
上面少了些字
不好意思,错别字,已经更正。
嘿嘿。我总是挑错别字,别介意啊:)
只是想让好的文章更好得呈现给读者.
当然不会介意啦~~我还很感激你呢,很少有这么认真的读者,实在是很感动。
我宁愿读者少一点,也不愿做个没用的人。
====
我不写有深度的文章,所以我成了没用的人,囧
呵呵,很大众化嘛,我这个菜鸟一篇都读懂了
为啥你的related posts不显示“WordPress插件开发实例2”呢~~~郁闷
这个,这个……我好好调整一下……谢谢提出问题~~
正在看你的插件教程,很棒!
重要的是idea, 怎样的插件
很正确啊~~
其实英语好的应该多看看官方文档,里面很多都简单易懂不需任何基础
WordPress的官方文档正是我喜欢它的根本原因,有这么丰富的文档,还有什么理由不用呢,呵呵
你博客的存档页是怎么弄的 能否给下模板代码^_^
我用的是Clean Archive Reloaded插件。不知道你问的是不是这个,呵呵。
应该就是了
我去瞧瞧 试试先
为啥你的头像不显示了呢?奇怪啊
因为用的不是以前的邮箱留言。。。现在这个还没去设置头像呢
为什么点开文章之后,侧栏都会跑到文章的后面去呢?
我估计是对IE6的不兼容造成的,唉……能力实在有限啊
传说中的3px bug?针对IE另加个宽度定义一般就OK了
比如:
_width:540px;
专写给IE看,FF和OP不认的。
我一直以来都没有用IE调试过我的模板,就是在FF下面做,做好了用IE7看看,过得去就拉倒了。不过IE下面也很无奈啊,就算有,也很难调试……真恶心呢
_width这个是通不过W3C的,可以试试用!important