我可以执行几次相同的动作?


8

我有一个包含一些设置的主题,使用,after_setup_theme但是我想编写自己的函数,也需要运行after_setup_theme。我希望将自己的东西保存在单独的文件中。我可以打after_setup_theme多次吗?

Answers:


27

WordPress钩子的工作方式类似于好莱坞:您不叫它们,他们叫您。但是与好莱坞不同,他们一直在名单上称呼所有人。

一个动作或一个过滤器具有连接到它的多个功能是正常的,这些功能来自不同的插件,或者甚至是WordPress核心中的不同功能,它们都执行特定的操作。这不仅是可能的,而且甚至是良好的实践,因为这意味着您的代码变得更加清晰(每个函数仅做一件事),并且通过取消挂钩来禁用一项特定功能更容易。

请记住,您还可以使用挂钩的优先级:如果您要同时运行functionA()和都functionB()在挂钩中after_setup_theme,但functionA()必须在之前运行functionB(),则可以functionA()使用默认优先级10functionB()优先级20(或大于10的任何其他数字)进行挂钩。无法执行的是在执行动作将另一个函数挂接到该动作。所以你不能挂钩functionB(),以after_setup_themefunctionA(),号召after_setup_theme。您可以直接调用它,但是会失去单独的钩子的好处。


7

我的建议是拥有一个“主”功能,如果愿意的话,它会调用所有其他功能。这样,您只需要一次执行该操作即可。

add_action( 'after_setup_theme', 'master_function' );
function master_function()
{
    func_a();
    func_b();
    func_c();
    func_d();
    func_e();
}
function func_a(){ /* Do something */}
function func_b(){ /* Do something */}
function func_c(){ /* Do something */}
function func_d(){ /* Do something */}
function func_e(){ /* Do something */}

这样做还有一个好处,就是能够返回可在后续函数调用中使用的值。


4

是的,您可以根据需要向挂钩添加任意数量的动作。去尝试一下。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.