Load my plugin before cache

时间:2019-05-10 作者:Just Call me Steve

我正在为我的工作开发一个快速插件,我需要的是让我的插件尽早加载,因为它使用ob\\u start来缓冲正在发生的一切。我可以将插件作为第一个加载:

function my_plugin_load_first()
{
    $path = str_replace( WP_PLUGIN_DIR . \'/\', \'\', __FILE__ );
    if ( $plugins = get_option( \'active_plugins\' ) ) {
        if ( $key = array_search( $path, $plugins ) ) {
            array_splice( $plugins, $key, 1 );
            array_unshift( $plugins, $path );
            update_option( \'active_plugins\', $plugins );
        }
    }
}
在正常情况下效果很好。但当缓存在很早就加载时启用时,就会出现问题

E:\\Programs\\xampp\\htdocs\\wordpress\\wp-includes\\plugin.php
E:\\Programs\\xampp\\htdocs\\wordpress\\wp-includes\\class-wp-hook.php
E:\\Programs\\xampp\\htdocs\\wordpress\\wp-includes\\version.php
E:\\Programs\\xampp\\htdocs\\wordpress\\wp-content\\advanced-cache.php
E:\\Programs\\xampp\\htdocs\\wordpress\\wp-content\\plugins\\wp-super-cache\\wp-cache-phase1.php
E:\\Programs\\xampp\\htdocs\\wordpress\\wp-content\\plugins\\wp-super-cache\\wp-cache-phase2.php
E:\\Programs\\xampp\\htdocs\\wordpress\\wp-content\\wp-cache-config.php
插件之后。php,而其他插件就在下面。我似乎找不到它是如何完成的,也找不到它是否可以被转载,因为它可能被硬编码到wordpress中,以检测缓存插件并自动分配它们以便尽早加载。也许我可以让别人看到我的剧本。

1 个回复
SO网友:twelvell

默认情况下,WordPress首先检查任何必须使用的插件(可选mu插件文件夹中的插件)并加载这些插件。因此,第一个加载的插件将位于/wp-content/mu-plugins文件夹中

然后,如果您正在运行多站点安装,它会检查网络激活的插件并加载这些插件。

然后,它通过查看wp\\u options数据库表的active\\u plugins条目来检查所有其他活动插件,并循环这些插件。插件将按字母顺序列出。

以下是WordPress加载所有内容的顺序信息:https://codex.wordpress.org/Action_Reference#Actions_Run_During_a_Typical_Request

您可以在此处了解有关WordPress插件API的更多信息:https://codex.wordpress.org/Plugin_API/

Answer:

所以,如果你想先加载那个特定的插件,然后创建/wp-content/mu-plugins/folder并将你的插件复制到其中,确保它是按字母顺序排列的第一个插件