通过插入断点显示WordPress当前已激活的插件

操作环境

操作系统信息:

master@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:    16.04
Codename:    xenial

WordPress 信息:
主程序版本:WordPress 5.3.2
主题及版本:Twenty Sixteen(版本:2.0, 由 WordPress 团队开发)

下面的内容涉及 WordPress 文件调用顺序的问题,关于这部分内容可以参考「荒原之梦」的这篇文章:

WordPress文件调用加载顺序(含矢量示意图)

正文

我们知道 WordPress 会在我们访问 WordPress 站点时加载已激活的插件,因此 WordPress 一定会首先获取已激活的插件的信息。

WordPress 获取已激活插件信息的代码位于 wp-setting.php 文件中,打开该文件,搜索 “Load active plugins” 即可找到相关代码,如下:

// Load active plugins.
foreach ( wp_get_active_and_valid_plugins() as $plugin ) {
        wp_register_plugin_realpath( $plugin );
        include_once( $plugin );

        /**
         * Fires once a single activated plugin has loaded.
         *
         * @since 5.1.0
         *
         * @param string $plugin Full path to the plugin's main file.
         */
        do_action( 'plugin_loaded', $plugin );
}
unset( $plugin );

去掉注释后看得更清楚:

foreach ( wp_get_active_and_valid_plugins() as $plugin ) {
        wp_register_plugin_realpath( $plugin );
        include_once( $plugin );
        do_action( 'plugin_loaded', $plugin );
}
unset( $plugin );

include_once( $plugin ); 的下面一行添加如下代码用以打印出当前已激活的插件及其路径:

echo $plugin. "<br/>";

之后,在 unset( $plugin ); 的上面一行添加如下代码用以终止程序继续向下执行:

exit;

修改完成之后,如下:

foreach ( wp_get_active_and_valid_plugins() as $plugin ) {
        wp_register_plugin_realpath( $plugin );
        include_once( $plugin );
        echo $plugin. "<br/>";
        do_action( 'plugin_loaded', $plugin );
}
exit;
unset( $plugin );

保存之后,我们再次刷新站点首页,就可以看到当前站点中已激活的插件及其所在路径了:

图 1

EOF