add_action()
和add_filter()
:add_action( 'publish_post', 'email_friends' );
function email_friends( $post_ID ) {
$friends = 'bob@example.org, susie@example.org';
mail( $friends, "sally's blog updated" , 'I just put something on my blog: http://blog.example.com' );
return $post_ID;
}
从逻辑的观点来看,这并没有使对我而言为什么在代码中调用该函数后会放置该函数?通常,这是我处理相同情况的方式:大约有90%的时间,我看到使用了第一种方案,因此使我相信,这种方法在某种程度上是有好处的。
#1 楼
更容易阅读:什么时候叫什么?如果您正在调试一个钩子,则可以立即查看是否必须读取该函数:如果不是钩子,则可以跳过代码。顶部的操作,过滤器和简码,然后将钩子添加到PHPDoc块中:add_action( 'wp_head', 'foo' );
add_action( 'shutdown', 'bar' );
/**
* Foo you!
*
* @wp-hook wp_head
* @return void
*/
function foo()
{
print '<!-- foo -->';
}
#2 楼
实际上并没有真正的区别,例如,我更喜欢采用第一种情况,因为将调用放在一个位置并在其下定义函数比较容易。PHP在运行任何内容之前都会解析整个文档,并且如果正确定义了函数,则一切都会正常运行,在两种情况下都没有好处。 />漂浮在船上的东西:)
评论
它之所以起作用,不是因为PHP会解析整个文档,而是因为在运行do_action时(很可能)在函数定义之后调用了call_user_func_array()。因此,您可以在任何时候定义该钩子函数。
–kovshenin
2015年5月4日在10:39
#3 楼
4年后,但我确信它会帮助人们从搜索中获得帮助。 。因此,无论您喜欢什么。我个人喜欢第一种样式:
如果您愿意的话,以目标为导向。因此,我想读一读,“我们正在钩子上做功能栏。好吧,现在,功能是做什么的?”
它为功能更好地设置了上下文。当然,这只是我个人的喜好。随便吧。
#4 楼
我觉得WordPress编码标准中应该对此有一些具体的指导,但似乎没有。 />A)始终遵循WP Codex中提供的示例,并依次执行
function
和add_action
,如下所示:function wporg_custom()
{
// do something
}
add_action('init', 'wporg_custom');
/> B)如果您选择了不同的样式,请选择一种样式并在您构建的所有主题和插件中始终如一地进行-不仅是目前的“随风而逝”。
评论
尽管我不同意(只是因为我的个人喜好和过去的编码习惯),但对于为什么以这种方式完成它,更容易读懂。
–voodooGQ
2012-09-26 18:19