wordpress add_action()

WordPress的流行很大程度上是因为他有很强可扩展性。

 

其实对于大多初学者来说,相对于add_action()而言,do_action()才是更加让人迷惑的东西。既然他们都是和WordPress的挂勾机制有关,他们的区别是什么呢?
WordPress的挂勾机制,允许插件把一些功能“挂载”到 WordPress 当中。也就是说,在系统运行至某一个环节时,去调用插件内的一些函数。执行挂勾分为两种:
动作 (Action)是WordPress中两种执行挂勾机制方法中的一种,另一种是Filter。原理与使用与Action很类似。

动作是 WordPress 运行到某些环节,或者在某些事件发生时,就会被执行的一种挂钩。任何的插件都可以通过动作接口来指示系统在遇到这些环节或者事件的时候,就执行指定的 PHP 函数。
add_action()就是告诉WordPress,把我们的函数(F2)和那个挂勾连接起来,让WordPress在执行那个申明自己是挂勾的动作(A1)时,执行我们指定的 PHP 函数(F2)。

文章WordPress插件开发入门:add_action()使用介绍动作 (Action)的定义中 的add_action(‘admin_menu’, ‘addPluginFunctionToOption’), admin_menu就是那个挂勾(A1),addPluginFunctionToOption就是我们希望和那个挂勾连接的函数(F2)。这样当那个 自己申明是挂钩的函数执行的时候,那个和挂勾连接的函数(F2)也会被自动调用。是不是有点“Dont call me, I will call you”的意思?
申明挂勾(Hook)

下面我们还是用一个例子来看如何用do_action()申明一个挂勾(Hook),然后利用add_action()将我们的函数和这个挂勾(Hook)挂上。
首先打开文件general-template.php(在wp-includes目录下),在其中加入下面这段代码

function do_action_example(){
$arg1 = array(‘example’,90, ‘do_action()’);
$arg2 = ‘this is the second arg’;
echo ‘Here is a function starting: do action example
‘;
do_action( ‘do_action_example’, $arg1, $arg2);
echo ‘
this line is following the function is claim it is a hook
‘ ;
}
function function_to_attache($a, $b){ print_r($a); echo ‘
‘. $b; }
add_action(‘do_action_example’, ‘function_to_attache’, 1, 2); // tell WordPress link function_to_attache to the hook do_action_example
调用挂勾函数

然后打开文件sidebar.php, 把这行代码拷到任何你想输出文本信息的地方。
小结

打开主页,你应该看到这样的结果显示
Here is a function starting: do action example
Array ( [0] => example [1] => 90 [2] => do_action() )
this is the second arg
this line is following the function is claim it is a hook
我们并没有invoke(调用)函数function_to_attache,可是它里面的内容被执行了,因为我们在sidebar.php中调用了do_action_example()这个挂勾(Hook)函数。

发表评论