上面把流程交待得很清楚了,下面该让你的插件做点事情了。这一部分包含一些插件开发的基本的原则,教给你如何让你的插件完成几个不同的任务。
很多插件通过连接一个或多个WordPress钩子来完成自己的功能。插件钩子工作的原理是,在WordPress运行的某些时刻,它会去检查是不是有插件注册了函数,如果有的话,就会运行这个插件的函数。这些函数改变了WordPress默认的功能。
比如说,在WordPress输出页面的title之前,它会先检查一个是不是有插件注册了“the_title”的“filter”钩子。如果有的话,title的文本就会通过一个个的函数处理,最后再输出结果。所以,如果你的插件想改变title的话,注册一个“the_title”的filter钩子就可以了。
另外一种是“action”钩子,比如“wp_footer”。在HTML页面快要执行完的时候它会检查是不是有插件注册了“wp_footer”的“action”钩子,如果有的话,就一个一个地执行。
你可以在Plugin API中找到更多的这种“filter”和“action”类型的钩子。如果你想在WordPress中的某一部分使用钩子,你也可以向开发者建议添加一个这样的钩子。
另外一种利用插件增强WordPress功能的方式是创建模板标记。使用你插件的人可以把这些标记加入到WordPress的模板里,可能放在sidebar等合适的地方。比如,一个地理位置的插件,定义一个放在sidebar里的geotag_list_states(),可以列所有这篇文章相关的“州”,点击这些“州”的时候,所有相关的文章会被列出来。
要定义一个模板标记,只要写一个PHP函数和文档,然后放在插件的主PHP文件中或者你插件的主页上举例一个例子说明应该往模板里加什么东西,怎样加,并在代码前后加上<?php ?>。
大部分的WordPress插件需要保存一些数据,这些数据可以保存在WordPress的数据库里,这里有两种基本的、把插件数据保存到WordPress数据库的方法:
1.用WordPress的“option”机制(下面会详述)。这种方法可以保存较少量的、分散的数据,是那种一开始让用户输入的选项形式的,以后基本不会变的数据。
2. Post Meta。对和单独文章、页面、附件相关的数据比较合适。可以查看:post_meta函数示例。
3. 新建一个数据表。这种方式适用于那些和文章、页面、评论等相关的数据,它们会随时间推移而增长。可以看一下这里“用插件创制数据表”。
点击这里可查看怎么创建可以自动地帮助你把插件的配制信息保存的插件管理面板。
WordPress有一套在数据库中保存、更改、读取独立的、有名字的数据(”options”)的机制。option的值可以是string, array或者php对象(在存储前会被序列化,或者转化成string)。option的名字是string类型,必须唯一,这样才能不和其它的WordPress插件冲突。
下面是你的插件调用WordPress需要用到了的主要的函数:
add_option($name, $value, $deprecated, $autoload);
“no”$name和$value当然就是你的option的名字和值啦;
$deprecated可选,WordPress已经不用了,可以传一个空值。
$autoload也是可选(’yes’ or ‘),默认为yes,即会被get_alloptions函数自动加载。
get_option($option);
从数据库中读取$option的值。
update_option($option_name, $newvalue);
这个就不用解释了。
这部分将在以后文章中详述。
做好了你的插件之后,你就可以考虑国际化了,让更多的人可以使用这个插件。在软件安装中,这叫做本地化,也就是把软件中使用的语言翻译成不同的语言。这里有相关的内容:I18n for WordPress Developers。
本文翻译自:http://codex.wordpress.org/Writing_a_Plugin
© 2009, kangzj. 版权所有.
十二月 22nd, 2009 at 12:10
我不会做。
[回复]
kangzj 回复:
十二月 22nd, 2009 at 15:45
@蓝冰, 还一边来一个,呵呵
[回复]
蓝冰 回复:
十二月 22nd, 2009 at 15:58
@kangzj, 你的2個通知有一個被打進垃圾箱了
[回复]
五月 27th, 2011 at 13:12
[...] 本文部分转自:http://kangzj.net/wordpress-plugin-tutorial-2/ [...]
六月 28th, 2011 at 21:08
做出个大概,不过核心功能还是没有理解,我要做一个支付宝插件,现在想在文章的自定义栏目添加标记和值,怎样才能调用,判断如果标记吻合,就在文章上面插入商城,值代表商品id
[回复]
蚁族 回复:
七月 8th, 2011 at 17:37
@长春网站建设,
这样就好了,gg_swfaddr是key~
这类算是比较深入的了,这类资料本来就少.努力.
[回复]
蚁族 回复:
七月 8th, 2011 at 17:38
@蚁族, get_post_meta(get_the_ID(),’gg_swfaddr’,true);
[回复]
八月 3rd, 2011 at 00:05
学习中~~~
[回复]