Answers:
在中wp-settings.php
,WordPress首先检查所有必须使用的插件(可选mu-plugins
文件夹中的插件)并加载它们。
然后,如果您正在运行多站点安装,它将检查网络激活的插件并加载它们。
然后,它通过查看数据库表的active_plugins
条目来检查所有其他活动插件wp_options
,并循环浏览这些插件。插件将按字母顺序列出。
这是WordPress几乎加载所有内容的顺序:http : //codex.wordpress.org/Action_Reference#Actions_Run_During_a_Typical_Request
关键是,通常每个插件的加载顺序都没有关系,因为正确编写的插件将使用WordPress钩子,这使您可以在WordPress启动后将功能插入到特定点。(正确编写的插件还将在其函数和类之前加上前缀,以免发生任何冲突。)
有关插件API的更多信息:http : //codex.wordpress.org/Plugin_API/
完全取决于插件。WordPress仅在插件中加载一个文件,该文件通常被命名为文件the-plugin-name.php
,并在顶部包含标题,描述,作者等。取决于插件如何使用require_once
和wp_enqueue_script
和诸如此类来加载其其余文件。
apply_filters()
创建一个钩子,但在使用的插件之前运行add_filter()
,那么它仍然可以工作吗?从逻辑上讲,似乎apply_filters()
已经触发了,因此add_filter()
第二个插件中的调用不会执行任何操作。仅使用插件创建的挂钩时,插件以什么顺序加载有关系吗?
apply_filters()
运行时加载了什么。add_filter()
必须先运行apply_filters()
。如果add_filter()
是在插件文件中,而不是在另一个函数中,则它将在plugins_loaded
钩子上运行,这通常会在需要之前发生apply_filters()
。
the_content
-如何确定其出现顺序?
我发现在插件中包含“延迟加载”操作很有用,该操作在所有插件完成加载后运行,如下所示:
add_action('plugins_loaded', 'my_late_loader');
然后,在所有其他插件之后启动函数my_late_loader,这使我可以在自己的函数my_other_function中使用其他插件定义的挂钩,该函数在my_late_loader中启动
/**
* Late loading function for actions that must run after all plugins
* have loaded
*/
function my_late_loader(){
add_action( 'some_hook', 'my_other_function', 10, 1);
}
有点费解(我知道),但是这可以确保在添加其他插件之前创建钩子,而与插件加载顺序无关。