您无法获取插件已保存的选项上的数据,但您可以做的是监视add_option
, update_option
还有可能get_option
通过简单的回溯,找出哪些插件正在使用哪些选项。我为您整理了一个小片段:
function gimme_your_options( $option_name ) {
$blame = \'core\';
$debug_backtrace = debug_backtrace();
foreach ( $debug_backtrace as $call ) {
if ( empty( $call[\'file\'] ) )
continue;
if ( ! preg_match( \'#wp-content/((?:(?:mu-)?plugins|themes)/.+)#i\', $call[\'file\'], $matches ) )
continue;
$blame = $matches[1];
break;
}
error_log( sprintf( \'blame %s for %s\', $blame, $option_name ) );
}
add_action( \'add_option\', \'gimme_your_options\' );
add_action( \'update_option\', \'gimme_your_options\' );
不是要把Jetpack扔到巴士下面,但这里有一个我的错误响应示例。日志:
[23-Mar-2015 05:39:27 UTC] blame core for active_plugins
[23-Mar-2015 05:39:27 UTC] blame core for _transient_doing_cron
[23-Mar-2015 05:39:27 UTC] blame core for cron
[23-Mar-2015 05:39:27 UTC] blame core for cron
[23-Mar-2015 05:39:28 UTC] blame plugins/jetpack/class.jetpack.php for _transient_timeout_jetpack_https_test
[23-Mar-2015 05:39:28 UTC] blame plugins/jetpack/class.jetpack.php for _transient_jetpack_https_test
[23-Mar-2015 05:39:28 UTC] blame plugins/jetpack/class.jetpack-options.php for jetpack_options
希望这有帮助。
还请注意,可能存在误报,例如,如果插件添加了cron计划,则该函数将是访问cron选项的罪魁祸首,然而,插件肯定不拥有该选项。