hook机制可以说是wordpress的核心,主要的代码在plugin.php文件中。理解hook用了不少时间,在这里用个最通俗的例子来讲… 整个wordpress程序就像是一盘烤串,每一串肉看作一个标签(Tag),串上的每一块肉就是具体的方法(Function)。wordpress的执行过程和你吃完这盘烤串是一样的,拿起一串挨着块的肉吃即触发到每个Tag下的方法,直到吃完所有烤串上的肉(执行完所有Tag下的方法),至此Wordpress也就运行起来了!
下面是用代码print_r($wp_filter[$tag])截取的一段Hook输出
[10] => Array (
[wptexturize]=>Array([function]=>wptexturize[accepted_args]=>1)
[convert_chars]=>Array([function]=>convert_chars[accepted_args]=>1)
[wpautop]=>Array([function]=>wpautop[accepted_args]=>1)...)
可以看出最外层的Array就是我们所说的串(Tag).再向里一层即Tag下的具体函数…plugin.php文件中操作这个结构的代码如下…
do{foreach( (array) current($wp_filter[$tag]) as $the_ )意图很明了,调用Tag下的Function…
if ( !is_null($the_['function']) ){$args[1] = $string;
$string = call_user_func_array($the_['function'], array_slice($args, 1, (int) $the_['accepted_args']));
}} while ( next($wp_filter[$tag]) );