入门指南
最简单的 WordPress 插件就是一个带有特定 WordPress 插件头部注释的 PHP 文件。强烈建议您创建一个专门的目录来存放您的插件,以便您所有的插件文件都能井井有条地保存在一处。
创建新插件,请按以下步骤操作:
- 导航到 WordPress 安装目录下的
wp-content
文件夹。 - 打开其中的
plugins
目录。 - 创建一个新目录,并用您的插件名命名(例如
plugin-name
)。 - 进入这个新建的插件目录。
- 创建一个新的 PHP 文件(最好也用您的插件名命名,例如
plugin-name.php
)。
以下是 Unix 命令行下的操作示例 (Copy 表示这是终端命令示例):
wordpress $ cd wp-content
wp-content $ cd plugins
plugins $ mkdir plugin-name
plugins $ cd plugin-name
plugin-name $ vi plugin-name.php
在上面的例子中,vi
是文本编辑器的名称。请使用您习惯的任何文本编辑器。
现在,当您在编辑这个新建插件的 PHP 文件时,您需要为其添加一个插件头部注释。这是一个特殊格式的 PHP 块注释(/* ... */
),包含了关于插件的元数据,如名称、作者、版本、许可证等。这个头部注释必须符合WordPress 的头部要求,并且至少包含插件的名称。
注意: 插件目录中只能有一个文件包含这个头部注释——如果您的插件包含多个 PHP 文件,只能其中一个文件带有此注释。
保存文件后,您应该能在您的 WordPress 站点后台看到您的插件被列出。登录到您的 WordPress 站点后台,点击左侧导航菜单中的 “插件”。这个页面会列出您站点上所有的插件。现在,您的新插件应该就在这个列表中了!
钩子 (Hooks):操作 (Actions) 与过滤器 (Filters)
WordPress 钩子让您能够在特定的位置“钩入”WordPress 的执行流程,从而无需修改任何核心文件即可改变 WordPress 的行为方式。
WordPress 中有两种钩子:操作 (Actions) 和 过滤器 (Filters)。
- 操作 (Actions) 允许您添加或改变 WordPress 的功能。
- 过滤器 (Filters) 允许您在内容被加载并最终展示给网站用户时对其进行修改。
钩子并不仅仅是为插件开发者准备的;WordPress 核心自身就大量使用了钩子来提供其默认功能。其他一些钩子则是预留的“空位”,专门供您在需要改变 WordPress 行为时“钩入”使用。这正体现了 WordPress 的高度灵活性。
基本钩子
创建插件时,您通常会用到三个基本钩子:
register_activation_hook()
、register_deactivation_hook()
和 register_uninstall_hook()
。
- 激活钩子 (Activation Hook) 在您激活插件时运行。您可以用它来执行插件的设置函数——例如,在选项表中创建一些默认设置。
- 停用钩子 (Deactivation Hook) 在您停用插件时运行。您可以用它来执行清除插件存储的任何临时数据的函数。
- 卸载钩子 (Uninstall Hook) 用于在通过 WordPress 后台删除插件后进行清理。您可以用它来删除插件创建的所有数据,例如添加到选项表中的任何选项。
添加钩子
您可以使用 do_action()
函数添加自己的自定义钩子,这将使其他开发者能够通过向您的钩子传递函数来扩展您的插件功能。
移除钩子
您也可以使用 remove_action()
或 remove_filter()
来移除之前定义过的函数。例如,如果您的插件是另一个插件的附加组件,您可以使用 remove_action()
并指定与前一个插件通过 add_action()
添加时相同的回调函数(callback function)。在这种情况下,操作的优先级 (priority
) 非常重要,因为 remove_action()
必须在初始的 add_action()
之后运行才有效。
请注意: 当从钩子上移除一个动作或者改变优先级时务必要小心,因为这些改动可能会对其他使用同一个钩子的操作产生难以预测的影响。我们强烈建议进行频繁的测试。
您可以在本手册的 钩子 (Hooks) 部分 了解更多关于创建钩子和与钩子交互的信息。
WordPress API
您知道吗?WordPress 提供了许多应用程序编程接口 (APIs)。这些 API 可以极大地简化您编写插件所需编写的代码。您肯定不想“重复造轮子”,尤其是在这么多人为您完成了大量的工作和测试之后。
最常用的是 Options API,它让您在数据库中为插件存储数据变得轻而易举。如果您正考虑在插件中使用 cURL
,那么 HTTP API 可能会引起您的兴趣。
既然我们讨论的是插件,您一定想学习 Plugin API。它包含多种功能,将助您进行插件开发。
WordPress 如何加载插件
当 WordPress 在后台的插件管理页面加载已安装插件列表时,它会搜索 plugins
文件夹(及其子文件夹),以查找带有 WordPress 插件头部注释的 PHP 文件。如果您的整个插件仅由一个 PHP 文件构成(如经典的 “Hello Dolly” 插件),那么该文件可以放在 plugins
文件夹的根目录下。但更常见的情况是,插件的文件都存放在以该插件命名的专属文件夹中。
分享您的插件
有时您创建的插件仅供自己的站点使用。但很多人喜欢将他们开发的插件分享给整个 WordPress 社区。在分享插件之前,有一件事情您需要做:选择许可证。这会让您的插件用户了解他们被允许如何使用您的代码。为保持与 WordPress 核心的兼容性,建议您选择一个兼容 GNU 通用公共许可证 (GPLv2+) 的许可证。