“Hooks(钩子)在WordPress的插件开发中非常重要,使用Hooks可轻松实现插件的扩展性功能。Hooks分为两种,一种为Actions(动作),另一种为Filters(过滤器),今天我们通过一个案例给大家介绍Action的使用。
1、“Hello World!”案例
首先编写完一个“Hello World()”的方法并调用该它,代码如下:
<?php
//实现HelloWorld的方法
function HelloWorld()
{
echo "Hello World!";
}
//调用HelloWorld方法
HelloWorld();
?>
方法很简单,完全没有难度,执行后结果在浏览器中显示如下图:
2、扩展
但我们希望该方法更具有扩展性,比如在问候语之后,可以执行其它动作,因此将“HelloWorld()”方法修改如下。
//实现HelloWorld的方法
function HelloWorld()
{
echo "Hello World!";
//使用do_action()方法增加一个可以挂载动作的点
do_action("Hello_Over");
}
这样,我们使用“do_action()”给“HelloWorld()”方法增加了一个动作的扩展点。其中,参数“Hello_Over”是我们给该动作添加的标记。
我们希望扩展什么呢?比如我希望是“鸟儿唱歌”,他希望是“阳光灿烂”,因此,添加两方法如下:
//实现"鸟儿唱歌"
function HelloBird()
{
echo "<br/>The birds are singing!";
}
//实现"阳光灿烂"
function HelloSunShine()
{
echo "<br/>The sun is shine!";
}
现在,在执行“HelloWorld()”方法之前,我希望加上“鸟儿唱歌”,添加代码如下:
//使用"add_action()"方法,将动作标记和方法挂钩
add_action("Hello_Over","HelloBird");
//调用HelloWorld方法
HelloWorld();
这里,我们使用了“add_action()”将动作的标记“Hello_Over”和方法“HelloBird()”实现挂钩,在调用“HelloWorld()”方法时,就会去执行“HelloBird()” 方法。现在再执行代码,结果如下图:
如果我们想“鸟儿唱歌”和“阳光灿烂”都有,那就添加代码如下“:
//使用"add_action()"方法,将动作标记和方法挂钩
add_action("Hello_Over","HelloBird");
//使用"add_action()"方法,将动作标记和方法挂钩
add_action("Hello_Over","HelloSunShine");
//调用HelloWorld方法
HelloWorld();
这样就实现了对“HelloWorld()”方法的简单扩展,执行结果如下图,最后给出全部代码。
<?php
//实现HelloWorld的方法
function HelloWorld()
{
echo "Hello World!";
//使用do_action()方法增加一个可以挂载动作的点
do_action("Hello_Over");
}
//实现"鸟儿唱歌"
function HelloBird()
{
echo "<br/>The birds are singing!";
}
//实现"阳光灿烂"
function HelloSunShine()
{
echo "<br/>The sun is shine!";
}
//使用"add_action()"方法,将动作标记和方法挂钩
add_action("Hello_Over","HelloBird");
//使用"add_action()"方法,将动作标记和方法挂钩
add_action("Hello_Over","HelloSunShine");
//调用HelloWorld方法
HelloWorld();
?>
3、总结
在WordPress中,使用“do_action()”方法实现对原方法开放接口,使用“add_action()”方法将接口和实现方法进行挂钩,就完成了对原方法的扩展,这种方式用在插件中,插件开发者只要提供插件扩展点,用户就可以随心所欲的扩展功能了。