WordPress如何在调用附加到其他钩子的函数之前调用附加到某个操作钩子的函数 时间:2017-04-02 作者:IAmDhar 我们知道,操作挂钩附带的回调函数的执行有一定的顺序。WordPress如何决定在执行所有挂钩时应该优先考虑哪些操作? 4 个回复 SO网友:Fayaz WordPressdoesn\'t 而是使用某种优先级同时执行所有操作和筛选器(即挂钩),execution order of these action and filter hooks are hard coded within WordPress core PHP files.在WordPress源代码中,搜索以下四个函数调用(使用任何文本编辑器的“在文件中查找”功能):apply_filters => 应用特定筛选器。apply_filters_ref_array => 应用特定筛选器,指定数组中的参数。do_action => 执行特定操作。do_action_ref_array => 执行特定操作,指定数组中的参数。您将看到上述每个函数调用在WordPress源代码中被多次使用,相应操作和过滤器挂钩的执行顺序(优先级)取决于WordPress何时进行这些函数调用。由于PHP本身逐行执行代码,这些函数及其相应挂钩的执行顺序也取决于哪个PHP文件&;这些函数调用位于哪一行。Note: 尽管每个具体行动的执行顺序;过滤器挂钩是在代码中预先确定的,单个挂钩的多次使用的执行顺序由$priority 参数WordPress硬编码这些函数调用,以确保这些操作的执行顺序;过滤器挂钩是预先确定的。否则,开发人员将有实时的硬编码主题&;插件。Note: 由于4.7 WordPress在内部使用WP_Hook 班因此,您还可以查看该类以了解所有这些是如何在内部完成的。 SO网友:ricotheque 顺序是由WordPress的编码方式决定的。如果您试图更改动作执行顺序,则必须编辑WordPress核心文件(并中断大量内容)。如果你想确保某些事情在其他事情之前就执行,你可以改变你如何钩住WordPress的动作。请记住,某些WordPress功能(例如is_single(), is_home(), 等)只有在特定的WordPress钩子运行后才能工作。更多信息载于此处:How to get WordPress' hook run sequence? SO网友:Faysal Mahamud 请阅读以下内容,你会得到答案(1)Is there a flowchart for wordpress loading sequence?(2)Between functions.php, widgets and plugins, which is loaded first? SO网友:Nathan Johnson 每当回调被添加到挂钩(动作或过滤器)时,它都会被添加一个优先级。如果未指定优先级,则使用默认值10。//* Add action to init at priority 4 add_action( \'init\', \'wpse_262184_init\', 4 ); 对于每个激发的钩子,回调将按递增的顺序或优先级运行(首先是较小的数字)。如果两个回调具有相同的优先级,那么它们将按照添加到挂钩的顺序运行。 文章导航