WordPress卸载插件用于单页加载



我有一些不属于wordpress的自定义页面,但它们通过调用wp_load.php来利用Wordpress主题。我希望能够禁用一些插件,例如点击计数器等,这样它们就不会在完全没有用的页面上浪费任何服务器资源。

这篇文章涵盖了使用代码 https://wordpress.stackexchange.com/questions/12163/disable-plugin-plugin-action-via-theme 关闭它们,但这不是我想做的。我想在网站上启用所有这些插件,对于仅点击主题的特定页面,我想禁用某些插件以帮助性能。

到目前为止,我唯一的解决方案是卸载所有钩子,但我希望有一种更干净的方法来做到这一点。

<?php
/*
Plugin Name: Conditional Deactivation of Plugins
*/
/* This must be installed as a must use plugin */
add_filter( 'option_active_plugins', function( $plugins ) {
    return array_filter( $plugins, function( $plugin ) {
        return ! ( *some condition on $_REQUEST* && in_array( $plugin, [ *list of plugins to exclude* ] ) );
    } );
} );

活动插件列表存储为选项"active_plugins"。这通过修改 get_option( 'active_plugins' ) 的返回值来工作。由于对 get_option( 'active_plugins' ) 的调用是在加载过程的早期完成的,因此此过滤器不能安装在普通插件或主题函数中.php因为该代码在调用 get_option( 'active_plugins' ) 后运行。但是,必须在调用 get_option( 'active_plugins' ) 之前加载插件。

get_option('active_plugins' ) 的返回值如下所示:

Array
(
    [0] => google-analytics-for-wordpress/googleanalytics.php
    [1] => nggtags-for-wp-media-library/nggtags-for-wp-media-library-loader.php
    [2] => wordpress-seo/wp-seo.php
)