wordpress:如何执行操作?
wordpress: how do actions get executed?
挂接到 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");
调用do_action("action_one")
时,是否先执行some_process
,然后执行some_different_process
?
如果调用该操作,所有挂接到该操作的函数都会自动执行,但如果未触发该操作,则不会调用它们。
例如,如果您有:
add_action("action_one","some_function",10);
如果action_one
被触发,那么some_function
将被调用。如果从未触发 action_one
,则不会调用 some_function。
do_action
是一种手动触发操作的机制,但请记住,它会触发该操作的任何挂钩,而不仅仅是您的挂钩(除非您设置了一些过滤器)。
另一个示例: 假设您在操作 save_post
:
上设置了自定义函数 运行
add_action( 'save_post', 'top_secret_function' );
那么每次你保存 post 你的 top_secret_function
就会 运行.
如果您想手动触发 save_post
(无需实际保存 post),您可以使用:
do_action( 'save_post' );
并且它会触发你的 top_secret_function
,但通常不推荐这样做,因为它还会触发挂接到 save_post
的任何其他函数(许多插件和核心文件都会这样做)。
You can setup custom actions 使用 add_action
和 do_action
.
的组合
如果您创建自定义主题或插件中存在的自定义操作挂钩,那么是的,您必须通过 do_action
在您希望触发它们的适当位置调用它们。
WordPress 不会自动查找操作挂钩并触发它们。它有许多内置的挂钩,您可以使用它们来 运行 自定义代码,但是如果您创建自己的挂钩,则还需要设置适当的 do_action
调用以便运行 他们。
要回答有关 some_process
和 some_different_process
执行顺序的其他问题,some_process
将在 some_different_process
之前 运行 因为它的执行顺序较低优先编号。
如果您希望某个动作尽早 运行,请给它一个较小的数字,例如 1 或 5,如果您不关心它 运行 的位置或希望它 运行 最后,我通常使用更大的数字,如 100 或 1000。如果两个钩子定义了相同的优先级,通常先注册的钩子 运行 优先于另一个具有相同优先级的钩子。
挂接到 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");
调用do_action("action_one")
时,是否先执行some_process
,然后执行some_different_process
?
如果调用该操作,所有挂接到该操作的函数都会自动执行,但如果未触发该操作,则不会调用它们。
例如,如果您有:
add_action("action_one","some_function",10);
如果action_one
被触发,那么some_function
将被调用。如果从未触发 action_one
,则不会调用 some_function。
do_action
是一种手动触发操作的机制,但请记住,它会触发该操作的任何挂钩,而不仅仅是您的挂钩(除非您设置了一些过滤器)。
另一个示例: 假设您在操作 save_post
:
add_action( 'save_post', 'top_secret_function' );
那么每次你保存 post 你的 top_secret_function
就会 运行.
如果您想手动触发 save_post
(无需实际保存 post),您可以使用:
do_action( 'save_post' );
并且它会触发你的 top_secret_function
,但通常不推荐这样做,因为它还会触发挂接到 save_post
的任何其他函数(许多插件和核心文件都会这样做)。
You can setup custom actions 使用 add_action
和 do_action
.
如果您创建自定义主题或插件中存在的自定义操作挂钩,那么是的,您必须通过 do_action
在您希望触发它们的适当位置调用它们。
WordPress 不会自动查找操作挂钩并触发它们。它有许多内置的挂钩,您可以使用它们来 运行 自定义代码,但是如果您创建自己的挂钩,则还需要设置适当的 do_action
调用以便运行 他们。
要回答有关 some_process
和 some_different_process
执行顺序的其他问题,some_process
将在 some_different_process
之前 运行 因为它的执行顺序较低优先编号。
如果您希望某个动作尽早 运行,请给它一个较小的数字,例如 1 或 5,如果您不关心它 运行 的位置或希望它 运行 最后,我通常使用更大的数字,如 100 或 1000。如果两个钩子定义了相同的优先级,通常先注册的钩子 运行 优先于另一个具有相同优先级的钩子。