开发WordPress插件

一味 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运行到某个阶段,它会检查当前阶段是否有插件注册了函数,如果是,那么函数将被执行。

例如,在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);

相关推荐