为什么插件要先于可插拔软件加载

时间:2012-01-17 作者:A.C.Balaji

WP URL call

我从一本用于WP插件开发的电子书中获得了这张图片。请你澄清一下,为什么插件是在Pluggables之前加载的。

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

直接从源pluggable.php:

<?php
/**
 * These functions can be replaced via plugins. If plugins do not redefine these
 * functions, then these will be used instead.
 *
 * @package WordPress
 */
?>
这就是你的答案pluggable.phpintended to be overridden by Plugins.

回复:装载顺序:

看见this post by Konstantin Kovshenin. 相关要点(10-15):

  1. wp_get_active_and_valid_plugins() retrieves the list of all active plugin files for loading and includes them. This is the point where your plugin code gets executed, functions, classes defined, etc.
  2. Includes wp-includes/wp-pluggable.php and wp-includes/wp-pluggable-deprecated.php 其中包括可以由插件重新定义的函数(以及不推荐使用的函数)。喜欢wp_mail() 对于更高级的邮件,wp_authenticate() 其他身份验证方法等wp_set_internal_encoding() 调用以根据blog\\u charset选项设置内部编码
  3. wp_cache_postload() 如果启用了对象缓存,则调用
  4. At this point a plugins_loaded action is fired. 这是您可以挂接的第一个操作(在加载非多站点WordPress插件之前启动muplugins\\u后),它出现在初始化之前,因为WordPress尚未初始化,至少尚未完全初始化
So,简化:

加载插件pluggable.php 已加载plugins_loaded 操作被触发,这是预期的顺序。

(注:这一切都发生在wp-settings.php.)

SO网友:kaiser

不要使用可插拔功能

请注意,您可以never be sure, that a later plugin doesn\'t override your pluggable! 我写在wp-hackers mailing list about this 不久前。

还有another thread on wp-hackers 这说明没有实施回退。请also read the related trac ticket.

结束

相关推荐

将目录路径传递给plugins_url()安全吗?

plugins_url() 函数接受插件slug或文件路径来构建URL。我有以下目录结构:/wp-content/mu-plugins/someplugin/css/file.css /wp-content/mu-plugins/someplugin/includes/file.php 我需要建立URL到file.css 在里面file.php. 我不能通过__FILE__ 因为这将是一个层次太深。plugins_url(\'css/file.css\', __FILE__ )