挂钩/动作最好被视为事件。
运行此代码时:
add_action( \'post_footer\', \'toms_footer_stuff\' );
你是说当
post_footer
事件发生时,运行
toms_footer_stuff
作用
这些功能的形式如下:
add_action( name_of_action, php_callable );
PHP可调用是可以被称为表示为对象的东西。它可以是以下任何一种:
add_action( \'post_footer\', \'toms_footer_stuff\' ); // a function
add_action( \'post_footer\', array( \'toms_class\', \'toms_footer_stuff\' ); // a static method on a class
add_action( \'post_footer\', array( $toms_class, \'toms_footer_stuff\' ); // a method on an object
add_action( \'post_footer\', function() { echo "hello world"; } ); // an anonymous function
add_action( \'post_footer\', $toms_closure ); // a Closure
当你打电话的时候
do_action(\'post_footer\')
, 你是说
post_footer
事件正在发生,请调用所有与之相关的东西。没有
post_footer
要调用的函数(除非您自己定义一个函数,但这只是巧合,除非您调用它,否则它不会运行
add_action
).
post_footer
与数组中的键有更多共同点。
过滤器类似,只是它们将值作为第一个函数参数,并返回它。
在内部,它们使用与操作相同的系统,因此这两个调用应该执行相同的操作:
do_action( \'init\' );
apply_filters( \'init\', null ); // not recommended/tested
操作用于执行工作,过滤器用于调整或修改数据/内容。如果你在过滤器中工作,你的网站会变慢。过滤器被调用的次数比操作多得多,而且往往会发生多次)。另一方面,行动往往在特定时间发生一次。