WordPress操作和过滤器中优先级的动态和用途是什么


What are the dynamics and uses of priorities in WordPress actions and filters?

如果有人熟悉Lynda的教程,我最近回顾了WP和Genesis:从头开始构建子主题:删除Genesis默认值。

演讲者提到将覆盖设置的优先级设置为某个数字,说数字越低,优先级越低。

我想知道如何找出文件方案中优先级的规模,如何在必要时设置优先级参数,以及是否有任何在线资源可以告诉我更多关于它的信息(超出我要求的内容(?

谢谢!

当您编写与某人编码的do_actionapply_filters挂钩的自定义函数或过滤器时,优先级就会发挥作用 - 这些都存在于 WordPress 核心代码中,也存在于插件、主题等中。

如果你正在编写要"执行"一个动作的代码,你可以写这样的东西:

add_action('action-hook', 'my_function_name', 10);

其中 10 是优先级。 (注意:如果省略优先级 - 它是可选的 - 默认值为 10(。

现在,有时您希望在可能已运行的所有其他操作之后完成操作(或筛选器(。 如果是这种情况,那么您可以将优先级设置为一个非常高的数字,因此它将最后运行:

add_action('action-hook', 'my_function_name', 9999);

(请注意,不能保证其他一些代码没有更高的优先级,所以这有点像一场精心策划的赌博(。

或者,如果您阅读了我在评论中提供的链接之一 - http://thereforei.am/2011/04/26/priority-1000-for-wordpress-hooks-actions-and-filters/- 您可以采用另一种方式。 如果要确保操作或筛选器先于其他人运行,请将优先级设置为非常低的数字:

add_action('action-hook', 'my_function_name', -1000);

在你在这里炸毁我的负数之前,这是合法的 - 阅读上面链接的文章。

这些同样的事情也适用于过滤器:

add_filter('the_content', 'my_function_name'); // defaults to priority 10 add_filter('the_content', 'my_function_name', -1000); // runs early / before others add_filter('the_content', 'my_function_name', 9999); // runs late / after other

较低的数字对应于较早的执行 - WordPress文档

因此,这意味着数字越小,优先级越高。Wordpress中的优先级是任意的。这意味着您可以相对于您尝试覆盖的函数设置它们。

规避此仲裁的最佳方法是搜索要锁定的钩子。使用您喜欢的 IDE,对有问题的钩子进行项目明智的搜索。搜索完成后,拉起您返回的每个钩子并检查其优先级。