wordpress:如何执行操作?

时间:2015-10-05 23:01:16

标签: wordpress function action hook call

挂钩到wordpress核心的自定义挂钩是否会被wordpress自动执行,还是我们必须自己调用定制钩子上的do_action函数?

示例:

add_action("action_one","some_process",10);
add_action("action_one","some_different_process",11);

function some_process(){ //... }
function some_different_process(){ //... }

do_action("action_one");

首先执行some_process,然后在调用some_different_process后执行do_action("action_one")吗?

2 个答案:

答案 0 :(得分:1)

如果调用了操作,则会自动执行挂接到操作的所有函数,但如果未触发操作,则不会调用它们。

例如,如果你有:

add_action("action_one","some_function",10);

如果some_function被触发,则会调用action_one。如果永远不会触发action_one,则不会调用some_function。

do_action是一种手动触发动作的机制,但要记住它会触发任何钩子进入该动作,而不仅仅是你的(除非你设置了一些过滤器)。

另一个例子:让我们假设你设置了一个自定义函数来运行save_post行动:

add_action( 'save_post', 'top_secret_function' );

然后,每次保存帖子时,top_secret_function都会运行。

如果您想手动触发save_post(不实际保存帖子),您可以执行以下操作:

do_action( 'save_post' );

它将触发你的top_secret_function,但通常不推荐这样做,因为它还会触发挂钩到save_post的任何其他函数(许多插件和核心文件都会这样做)。

You can setup custom actions使用add_actiondo_action的组合。

答案 1 :(得分:1)

如果您创建自定义主题或插件中存在的自定义操作挂钩,则是,您必须通过do_action在您希望触发它们的适当位置调用它们。

WordPress不会自动找到动作挂钩并触发它们。它有许多内置的钩子,您可以锁定它们以运行自定义代码,但是如果您创建自己的钩子,那么您还需要设置适当的do_action调用以运行它们。

要回答有关some_processsome_different_process执行顺序的其他问题,some_process将在some_different_process之前运行,因为它的优先级较低。

如果你想让一个动作提前运行,给它一个较小的数字,如1或5,如果你不关心它在哪里运行或者希望它最后运行,我通常使用更高的数字,如100或1000。如果两个钩子被定义为具有相同的优先级,通常首先注册的钩子将在具有相同优先级的另一个钩子之前运行。