Mit diesem Must Use Plugin kann man entweder alle oder einen Teil der Plugins gefahrlos im Live-Betrieb deaktivieren:
<?php /* Plugins deaktivieren, wenn dev=secure_mode, außer für erlaubte */ if((isset($_GET['dev']) && $_GET['dev']=='secure_mode') || (isset($_COOKIE['dev']) && $_COOKIE['dev']=='secure_mode')) { // Array von Plugin-Verzeichnisnamen, die NICHT deaktiviert werden sollen $allowed_plugins = array( 'duplicate-post', 'loco-translate' ); // Aktive Plugins filtern, um nur erlaubte einzuschließen add_filter('option_active_plugins', function($plugins) use ($allowed_plugins) { if (!is_array($plugins)) { return array(); } $filtered_plugins = array(); foreach ($plugins as $plugin) { // Plugin-Verzeichnisname aus Plugin-Pfad extrahieren (z.B. 'plugin-dir/plugin-file.php' -> 'plugin-dir') $plugin_dir = dirname($plugin); if ($plugin_dir === '.' || in_array($plugin_dir, $allowed_plugins)) { $filtered_plugins[] = $plugin; } } return $filtered_plugins; }, 1); // Netzwerk-/seitenweite Plugins filtern, um nur erlaubte einzuschließen add_filter('site_option_active_sitewide_plugins', function($plugins) use ($allowed_plugins) { if (!is_array($plugins)) { return array(); } $filtered_plugins = array(); foreach ($plugins as $plugin => $activation_time) { // Plugin-Verzeichnisname aus Plugin-Pfad extrahieren $plugin_dir = dirname($plugin); if ($plugin_dir === '.' || in_array($plugin_dir, $allowed_plugins)) { $filtered_plugins[$plugin] = $activation_time; } } return $filtered_plugins; }, 1); }
Der PHP-Code wird in /wp-content/mu-plugins/disable-plugins.php
gesichert und mit dev=secure_mode
als GET oder POST aktiviert.