2017-10-11 3 views
0

Ich habe einige benutzerdefinierte Seiten, die nicht Teil von WordPress sind, aber sie tippen auf das Wordpress-Thema durch den Aufruf wp_load.php. Ich möchte in der Lage sein, ein paar Plugins wie Hit-Counter usw. zu deaktivieren, damit sie keine Server-Ressourcen auf Seiten verschwenden, die für sie überhaupt keinen Nutzen haben.Wordpress Unload-Plugin für Single Page Load

Dieser Beitrag behandelt die Abschaltung mit Code https://wordpress.stackexchange.com/questions/12163/disable-plugin-plugin-action-via-theme, aber das ist nicht das, was ich tun möchte. Ich möchte alle auf der Website aktiviert lassen, für die spezifischen Seiten, die nur auf das Thema tippen, möchte ich bestimmte Plugins deaktivieren, um die Leistung zu verbessern.

Bis jetzt ist meine einzige Lösung, alle Haken zu entladen, aber ich hatte gehofft, dass es einen saubereren Weg geben würde, es zu tun.

Antwort

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* ])); 
    }); 
}); 

Die Liste der aktiven Plugins wird als Option 'active_plugins' gespeichert. Dies funktioniert, indem der Rückgabewert von get_option ('active_plugins') geändert wird. Da der Aufruf von get_option ('active_plugins') sehr früh im Ladeprozess erfolgt, kann dieser Filter nicht in einem normalen Plugin oder in der functions.php des Themes installiert werden, da dieser Code nach dem Aufruf von get_option ('active_plugins') ausgeführt wird. Allerdings müssen Plugins vor dem Aufruf von get_option ('active_plugins') geladen werden.

Der Rückgabewert von get_option ('active_plugins') sieht wie folgt aus:

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 
)