一味 2019-06-21
WordPress插件允许你对原有的网站进行修改和增强功能,而不必修改WordPress的核心程序,本文就简单介绍一下如何开发一个自己的Wordpress插件。
所有的Wordpress插件都存放在网站的wp-contentplugins目录下,每一个插件占用一个目录。你首先要想好自己的插件的名字,然后建立一个属于自己插件的目录。
一个好的习惯在是插件目录下建立一个空的index.php,这个文件的作用的防止网站输出这个目录的文件。事实上很多程序员也这样做了,你经常可以看到网站目录下有个30B的index.php,里面只写了一句:Silence is golden.
首先建立一个和插件目录名相同的php文件,在文件头添加一些标准插件信息:
<php /* Plugin Name: 插件名 Plugin URI: 插件的介绍或更新地址 Description: 插件描述 Version: 插件版本,例如 1.0 Author: 插件作者名称 Author URI: 插件作者的链接 License: 许可证,如GPL2 */
例如:
<php /* Plugin Name: Codlr Plugin URI: http://codlr.com Description: Demo for codlr Version: 1.0 Author: Pnuts Author URI: http://pnuts.cc/ License: GPL2 */
创建好后,就可以在Wordpress的后台控制面板看到新增加的插件了:
当然这样插件目前还没有任何功能,我们可以尝试增加一些功能。
WordPress的钩子机制
要为Wordpress插件增加功能,首先要了解一下Wordpress的钩子机制。文章最前面就说过,Wordpress插件增加网站功能时不会修改Wordpress的核心代码,这个正是靠钩子来实现的:Wordpress对不同阶段定义了很多钩子,插件将自身的函数注册到相关的钩子上,当WordPress运行到某个阶段,它会检查当前阶段是否有插件注册了函数,如果是,那么函数将被执行。
例如,在WordPress在把文章的标题发送到浏览器前,会检查是否有插件函数注册了“the_title”的钩子。如果是,标题文本将会传送到注册函数中,插件函数变可以对标题内容进行修改,而函数的返回值最终将会被传送给浏览器。
要想在钩子上挂载一个函数,需要使用add_action方法,关于add_action的定义是这样的:
add_action( $tag, $function_to_add, $priority, $accepted_args ); ?>
其中$tag和$function_to_add是必选的,分别指定了钩子的名字和挂载的函数。而$priority和$accepted_args为可选参数,类型都为整数。$priority用于指定与所有挂载函数的执行顺序。数字越小,执行越早,具有相同优先级的函数在它们被添加到动作的顺序执行,默认为10。$accepted_args为挂钩函数所接受的参数数量,默认为1。
下面给了一个简单的例子,展示如何通过钩子将标题中的英文字母全部转换成大写:
add_action('the_title', function($title) { return strtoupper($title); });
WordPress的钩子很多,这里不能一一介绍,在Wordpress的官方上有详细的说明,可惜没有中文的:Plugin API/Action Reference。
WordPress的选项机制
WordPress的另一个重要机制是它的选项机制,它允许插件将一些特定属性保存在数据库中(wp_options表),随时可以更新或查询。它的使用方法很简单:
//添加一个选项 add_option($name, $value, $deprecated, $autoload);
$name(必选)和$value(可选,默认为空)为字符串,分别表示选项的名字和值。$deprecated已经过时了,不再被Wordpress使用了。$autoload(可选)可以为’yes’或’no’,默认为’yes’,表示这个option是否会被get_alloptions函数自动检索。
另外两个函数分别用来或取和更新选项的:
//更新选项 update_option($option_name, $newvalue); //获取选项 get_option($option);