2017-10-11 77 views
0

我有一些自定義頁面不是wordpress的一部分,但他們通過調用wp_load.php來進入Wordpress主題。我希望能夠禁用一些插件,如命中計數器等,這樣他們就不會浪費任何服務器資源在根本沒有用處的頁面上。Wordpress Unload插件單頁加載

這篇文章涵蓋了使用代碼https://wordpress.stackexchange.com/questions/12163/disable-plugin-plugin-action-via-theme關閉它們,但這不是我想要做的。我希望在網站上保持所有這些功能的啓用,對於只打入主題的特定頁面,我想禁用某些插件來提高性能。

到目前爲止,我唯一的解決方案是卸載所有的鉤子,但我希望有一個更乾淨的方式來做到這一點。

回答

0
<?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')是在加載過程的早期完成的,因此該代碼無法安裝在普通插件或主題的functions.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 
)