Ale*_*hov 26 php wordpress hook closures anonymous-function
WordPress钩子有两种使用方式:
使用回调函数名称和适当的函数
add_action( 'action_name', 'callback_function_name' );
function callback_function_name() {
// do something
}
Run Code Online (Sandbox Code Playgroud)使用匿名函数(闭包)
add_action( 'action_name', function() {
// do something
} );
Run Code Online (Sandbox Code Playgroud)WordPress的使用方法有什么区别吗?什么是首选方式和原因?
Tee*_*Jee 32
匿名函数的缺点是您无法使用remove_action删除操作.
要点:要删除钩子,在添加钩子时,$function_to_remove和$priority参数必须匹配.这适用于过滤器和操作.删除失败不会发出警告.
因为您没有定义function_to_remove,所以无法将其删除.
因此,您永远不应该使用其他人可能想要覆盖的插件或主题.
Vic*_*tor 16
使用闭包具有保持全局命名空间清洁的好处,因为您不必首先创建全局函数作为回调传递.
add_action('admin_init', function () {
// some code...
});
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢使用闭包作为回调,除非:
闭包在课堂上也是有益的.
class SomeClass
{
public function __construct()
{
add_action('wp_head', function () {
$this->addSomeStyling();
});
}
protected function addSomeStyling()
{
echo '<style> body { color: #999; } </style>';
}
}
Run Code Online (Sandbox Code Playgroud)
通常,回调方法需要公开,但在这种情况下,您也可以将它们设为私有或受保护.
此解决方案仅适用于PHP 5.4+.为了使它适用于PHP 5.3,您需要显式地将$this对象引用传递给闭包,例如:
public function __construct()
{
$self = $this;
add_action('wp_head', function () use ($self) {
$self->addSomeStyling();
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9351 次 |
| 最近记录: |