操作环境
操作系统信息:
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 获取已激活插件信息的代码位于 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 );
保存之后,我们再次刷新站点首页,就可以看到当前站点中已激活的插件及其所在路径了:
EOF