WordPress 插件 允许你通过一种简单的方式来修改、定义和强化博客的功能。你可以在不修改WordPress的核心代码的情况下,通过插件来直接向WordPress中增加功能。以下是对 WordPress 插件的基本定义:
WordPress 插件:WordPress插件可以是一个程序,也可以是PHP语言编写的一个或一组函数。它可以通过插件 API提供的一系列方法和接口,来向WordPress博客中增加一些特定的功能或服务,并且让它们看上去就像是WordPress原有的功能一样。
想要为你的博客添加一些新的或者不一样的功能?你可以先去WordPress插件库搜索一下,看看是不是有人已经开发了一个符合你要求的WordPress插件。如果很不幸——没有,那么这篇文章会指导你自己开发一个。
要想读懂本文中的内容,你需要对 WordPress 的基本功能和 PHP 编程有一定的了解。
资源
- 如果想要了解WordPress插件应当如何安装,以及它们是怎样工作的,去插件资源集合里看看,这里有许多插件开发者的文章和资源,包括如何编写WordPress插件,以及其它特定主题的文章等。
- 如果想要知道WordPress插件是如何编写的,你可以查看一些插件的源代码,例如WordPress中自带的Hello Dolly插件。
- 如果你的插件已经写完了,并且感觉良好的话,你可以阅读插件提交以及推广来学习如何把它发布出去,与他人分享你的劳动成果。
创建插件
这个部分告诉你怎么把开发插件的理想变为现实。
名字,文件和位置
名字
首先你需要想好这个插件是用来做什么的,然后你就可以为它起一个独一无二的名字。如果你不确定这个名字是否被使用过,你可以通过Google或者其他的方式来搜索一下。大多数插件开发者为插件起的名字都能很直观地描述它的功能,例如,一个与天气有关的插件的名字中就应当包含“天气”两个字。插件的名字可以由多个字词组成。
文件
下一步就是根据你插件的名字,创建一个PHP主文件。举个例子,如果插件的名字叫做 “Fabulous Functionality”,那么PHP主文件的名字就可以是 “functionality.php”,当然,还要注意重名的问题。因为用户在安装你的插件的时候,会默认把你的插件安装到一个叫wp-content/plugins/的目录下,如果两个插件的文件名冲突了,那就杯具了。
你的插件中至少应当包含一个PHP主文件(当然你也可以把它拆分成多个文件),还可以包含Javascript文件、CSS文件、图片文件以及语言文件等。如果你的插件中包含多个文件,你还需要建立一个文件夹,并把插件包含的所有文件放到这个文件夹中,这样你只要让其他人把整个文件夹放到wp-content/plugins/目录下就可以了。插件文件夹的名称通常和插件PHP文件的名称相同,例如PHP文件的名称叫做functionality.php的话,文件夹的名称就可以叫做functionality。
需要注意的是,由于在WordPress中可以配置wp-content/plugins/目录的位置,所以你必须使用plugin_dir_path()和plugins_url()两个函数来获取插件的路径。
查看http://codex.wordpress.org/Determining_Plugin_and_Content_Directories 以获取更多信息
在这篇文章之后的部分,如果再提到“PHP主文件”这个概念的话,指的就是插件中最主要的php文件,这个文件通常位于wp-content/plugins/目录或其子目录下。
自述文件
如果你想将你的插件发布到http://wordpress.org/extend/plugins/, 你必须在插件包中建立一个标准格式的readme.txt文件. 文件格式参见http://wordpress.org/extend/plugins/about/readme.txt.
你可以访问http://wordpress.org/extend/plugins/about/readme.txt 查看如何去格式化自述文件,或者访问http://generatewp.com/plugin-readme/ 来使用文档自动生成器
需要注意的是,WordPress是通过自述文件来判断这个插件是处于“必要”还是“测试”状态的。
主页
为你的插件建立一个主页会非常有用,你可以在插件的主页上对插件的功能、安装方法、使用说明、适用的WordPress版本以及插件更新信息等进行介绍。
文件头
现在开始吧,首先让我们向PHP主文件中加入一些信息
标准插件信息
插件的主文件顶部必须包括一个标准插件信息头。WordPress通过标准信息头识别插件的存在,并把它加入到控制面板的插件管理页面,这样插件才能激活,载入插件,并运行里面的函数;如果没有信息头,插件将无法激活和使用。标准信息插件头的格式为:
<?php /* Plugin Name: 插件名称 Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates Description: 插件的简单描述 Version: 插件版本号, 例如: 1.0 Author: 插件作者 Author URI: http://URI_Of_The_Plugin_Author作者地址 */ ?>
标准信息头至少要包括插件名称,这样WordPress才能识别你的插件。其他信息将显示在控制面板插件管理页面中。标准插件信息对各行顺序没有要求。
版权信息
通常我们还要在标准信息头中加入插件的许可证信息。大多数插件使用GPL或GPLCompatibleLicenses许可。如果使用GPL许可,要求插件中包含以下信息:
<?php /* Copyright 年份 作者名 (email : 你的邮箱) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ ?>
开始编写插件
现在是时候让你的插件做些事情了。这部分内容包括插件开发的一般思路,以及需要完成的工作。
WordPress插件钩子
在WordPress中,“插件钩子”是一个非常重要的概念。许多WordPress插件都是通过与插件钩子相关联的方式,来完成他们的功能的。插件钩子的工作原理是:在WordPress运行期间,有许多特定的时间点,WordPress会在这些时间点检测相应的插件钩子,如果检测到有函数与当前的插件钩子相关联的话,就会运行这些函数。正是这些函数改变了WordPress的默认功能。
例如,当WordPress在发表一篇文章之前,会首先检测一个名为”the_title”的插件钩子(过滤器类型的钩子),如果此时有任何插件的函数与这个钩子相关联的话,那么文章的标题就会首先被这些函数依次进行处理,最后再把函数处理的结果显示到屏幕上。所以,如果你的插件想要对文章的标题进行处理的话,就需要将对应的处理函数注册到名为”the_title”的过滤器钩子上。
再举个例子,在WordPress即将生成