怎样开辟一个WordPress插件

WordPress 插件 允许你对 WordPress 博客进行修改、自定义和加强。不必修改 WordPress 的核心程序,直接用插件的形式增加功能。下面是对 WordPress 插件的基本定义:

WordPress 插件:WordPress 插件是用 PHP 语言写成的一只或者一组程序。这些程序可以为 WordPress 增加某些原来没有的功能,这样使用者看起来仿佛就是这个博客固有的功能。插件 API

想为你的博客添加功能吗?那么最简单的方法就是搜搜看有没有现成的插件。如果很不幸——没有,那么这篇文章会指导你自己开发一个。

你得先想一个名字,并且努力让它独一无二。在Plugins或者其他宝贝地方——Google或者百度先验证一下这个名字到底是不是独一无二的。另外你的名字得让别人明白你的插件是干什么的。

下一步是创建一个PHP文件。按照原文奇怪的逻辑,你得先想好名字。这个名字还得是从插件名衍生过来的(其实是为你自己辨认的)。举个例子吧,比如说你的插件名字叫 Fabulous Functionality,你的PHP名字可能是 fabfunc.php。另外不要用汉语拼音(这也是我加的),还要避免重名。人民群众会把你的插件安装到一个你也知道的叫wp-content/plugins/的地方,如果名字冲突岂不要悲剧了。

你也可以选择把插件分割成几个文件。 显而易见一个php文件是必需的,同时还需要图片、CSS、JavaScript、语言(当然也可以没有)。如果有很多文件,命名一个php和一个文件夹,例如 fabfunc and fabfunc.php。把你所有插件文件放到文件夹里,然后让你的用户相信只要把你的整个压缩包解压到 wp-content/plugins/就能正常使用你的劳动成果。

在本文的其余部分,“插件的PHP文件”是指主要插件的PHP文件,无论是在的wp-content/plugins/或子目录。

如果你想将你的插件发布到你必须在插件包中建立一个标准格式readme.txt文件. 文件格式参见

最好为插件建立一个主页,以介绍插件的功能、安装方法、使用说明、适用的WordPress版本、插件更新信息等。

插件的主文件顶部必须包括一个标准插件信息头。WordPress通过标准信息头识别插件的存在,并把她加入到控制面板的插件管理页面,这样插件才能激活,载入插件,并运行里面的函数;如果没有信息头,插件将无法激活和使用。标准信息插件头的格式为:

标准信息头至少要包括插件名称,这样WordPress才能识别你的插件。其他信息将显示在控制面板插件管理页面中。标准插件信息对各行顺序没有要求。

这样的升级机制能够正确地读出你的插件版本,建议你选择一个格式的版本号,不同版本之间,并坚持下去。例如,x.x中或x.x.x或xx.xx.xxx

通常我们还要在标准信息头中加入插件的许可证信息。大多数插件使用GPLGPLCompatibleLicenses许可。如果使用GPL许可,要求插件中包含以下信息:

现在是时候让你的插件能干些什么了。这部分内容包括插件开发的一般思路,而且介绍了开发插件需要做哪些工作。

许多WordPress插件通过连接一个或多个WordPress插件钩子来完成他们的功能。插件钩子的运行机理是,当WordPress运行到不同阶段,WordPress会检查当前阶段是否注册了插件函数,如果是,那么函数将被执行。通过执行插件函数改变了WordPress的默认功能。

例如,在WordPress将日志标题和post发送到浏览器前,会检查是否有插件函数注册了名为“the_title”的“filter”钩子。如果是,标题文本将会传送到注册函数中,注册函数返回值将会传送到浏览器。所以,如果要在日志标题中加入一些信息,可以通过这种方式实现。

另一个例子是名为“wp_footer”的“action”钩子。在WordPress的HTML页脚创建之前,会检查是否有插件注册了名为“wp_footer”的“action”钩子,如果是依次执行她们。

在Plugin API了解更多如何注册“filter”和“action”类型的钩子函数,及WordPress提供了那些插件钩子。如果你发现WordPress没有提供自己想要的钩子,你可以建议WordPress加入这个钩子,很多建议WordPress都会采纳。具体方法参考Reporting Bugs。

另一个通过插件加入新功能的方法是建立自定义的模版标签Template Tags。如果有人想用你的插件,可以在他们的主题中添加这些标签,边栏,文章内容段,或者任意的只要是适合这插件的地方。例如,一个给文章添加地理位置的插件可能定义了一个模板标签函数geotag_list_states()放在边栏上,这里列表了所有在文章中关联的州的名称,并且还带有插件提供的到这些州的文档页的链接。

定义一个自定义模板标签,仅需要写一个PHP函数,并且在你插件主页或者插件的主PHP文件中声明一下。声明函数的时候,为这个函数提供一个示例来明确如果想要应用这个函数需要加主题中加些什么文件是个相当棒的主意。

大多数WordPress插件需要站点的所有者或者是博客的用户输入信息,然后在对话过程中保存起来,以便过滤器函数(filter)、动作函数(action)或者模板函数(Template)使用。这些信息必须保存在WordPress的数据库中,以便下次使用。这里有两种基本的方法用于保存插件的信息到数据库里面。

使用WordPress的option机制(稍后会有介绍)。这种方法适合于保存一些相对小数量的静态命名类数据–这类数据通常只需要网站的所有者在首次建立插件的时候输入,以后很少改动。

文章属性post meta(a.k.a. Custom Fields),适用于那些只和个人文章、页面或者附件有关的数据。

参看post_meta Function Examplesadd_post_meta(), 以及与文章相关函数属性post.fuction meta (a.k.a. Custom Fields).

自定义分类法。对于文章分类或者其他对象,比如用户、评论,或者用户可编辑列表中的数据名称/值,可以考虑使用自定义分类法,尤其是当你要访问的所有的文章/对象与给定的分类法项目相关联的时候。查阅Custom Taxonomies

在数据库中创建一个新的自定义数据表。这种方法适合于与个人文章、页面、附件或者评论相关的数据,这类数据会随着时间越来越多,它们也没有专有名称。参看Creating Tables with Plugins来了解更多这类信息处理方法。

参看Creating Options Pages得到更多如何创建会自动保存你选项数据的页面。

WordPress拥有一个机制来保存,更新和检索WordPress数据库中专用,名称类数据(即options机制)。选项值可以是字符,数组或PHP对象(他们会被序列化,或在存储前转换为字符,并在被检索时解开序列)。选项名称是字符,并且它们必须是独一无二的,这样就不会与的WordPress插件相冲突。

它也通常被认为是一个不错的主意,将你的插件使用的选项的数量降到最低。例如,考虑存储序列化数组的10个元素作为一个单一的命名选项,而不是存储10个不同的命名选项。

假定你的插件有一些选项(option)存储于WordPress的数据库中(参看上一节),你可能会想要一个主控面板来允许你的插件用户查看和编辑选项值。实现这一目标的方法阐述于Adding Administration Menus。

在你完成了你的插件的编写工作之后,另一个需要考虑的问题(假设你准备跟大家分享你的插件的话)就是将其国际化。国际化就是将你的软件设置成能够本地化的过程;本地化是将软件中显示的语言翻译成其他语言的过程。Wordpress正在被全球的人们使用,所以全球化和本地化是他内在的特性,这其中就包括了插件的本地化。

我们十分希望你能够将你的插件国际化,这样其他国家的用户就可以在自己的本地使用它了。我们有一个关于国际化的综合说明在I18n for WordPress Developers,这其中就包括了一个描述插件国际化的部分。

本节介绍将插件托管到之后必要的更新步骤。特别列出于使用Subversion(SVN)的一些细节。

假设你已经提交你的插件到WordPress的插件库,随着时间的推移,你可能会发现需要将某些功能添加到插件或修正错误。更新代码,并将变化提交到你的插件主干(trunk),这些变化将是公开可见的,但仅限于在技术上志同道合的人通过SVN检查你的插件。其他用户通过网站或自己的WordPress插件管理下载都不会改变。

确保一切承诺和新版本的实际工作。注意所有版本的WordPress的插件支持,并尝试与他们进行测试。不要只是测试新功能,也确保你不小心打破一些插件的旧功能。

在readme.txt文件中添加一个新的小节“changelog“,简要介绍与最后一个版本相比,新版本有什么改变。这将列出的插件页面上的“更新日志”选项卡。

给系统一个运行两三分钟,然后检查你的插件,看看更新是否一切正常,以及WordPress 是否提示插件有更新​​(更新检查可能有缓存,比如wordpress.org插件页面或后台安装,所以这可能需要一些时间 —— 尝试访问“可用更新”页面)。

WordPress插件的代码应该遵循WordPress Coding Standards. 另外请同时参考Inline Documentation。

你的插件中所有函数的名称都应该与现存的Wordpress Core函数,其他插件或主题的任何名称不同。基于这个原因,我们建议你在你的插件的所有函数的名称之前加上一个你自己选择的前缀,或者把你的插件的函数都写在一个类里面(当然这个类的名字也必须是唯一的)。

请不要把Wordpress数据库表格前缀(通常是“wp_”)直接写在你的插件里,请使用$wpdb-prefix 。

虽然数据库的读取相对便宜,但它的写入是相当昂贵的。数据库十分擅长获取信息并呈现给用户,而且这些操作(通常)是非常迅速的。然而对数据库进行改动就是一个非常复杂的过程了,而且需要使用更长的计算时间。因此,请尽量减少你对数据库进行写入的次数。在你编写程序的时候就做好所有的准备,这样就可以只在必须的时候再进行写入了。

在数据库里只SELECT你需要的东西。尽管数据库的读取十分便捷,我们依然推荐你值查找真正需要的数据,来尽量减少数据库的负载。例如,如果你只想获得表格的行数,不要使用 SELECT * FROM, 因为这样的话每一行中的所有数据都会被读出,导致内存的浪费。同样的,如果在插件中你只想获得post_id和post_author,请只 SELECT 这两项来减少数据库的负载。记住:在某一个操作的同时可能有其他上百个进程需要使用数据库,而数据库和服务器都必须同时满足所有这些进程的需求。学习怎样尽量减少你的插件对数据库的使用可以避免对这些资源的滥用。

不要让你的PHP出错。在你的wp_config.php文件中添加define(WP_DEBUG,true)。

未经允许不得转载:主机宝贝 » 怎样开辟一个WordPress插件

评论 抢沙发

评论前必须登录!