Problem: Der Menüpunkt „Plugins“ fehlt im WordPress-Backend für Administratoren vollständig. Auch der direkte Aufruf von /wp-admin/plugins.php führt zur Meldung, dass der Benutzer nicht berechtigt ist.
Wichtige Erkenntnis
Das Problem muss nicht durch aktuell ausgeführten Code verursacht werden.
WordPress speichert die Capabilities einer Rolle in der Datenbank. Wurde irgendwann beispielsweise mit remove_cap() das Recht activate_plugins von der Administrator-Rolle entfernt, bleibt diese Änderung bestehen – auch wenn das verantwortliche Plugin oder Snippet später deaktiviert oder gelöscht wird.
Deshalb kann die Ursache weiterhin bestehen, obwohl:
- das ursprüngliche Plugin gelöscht wurde,
- Code Snippets deaktiviert sind,
- keine entsprechende Funktion mehr im Theme vorhanden ist,
- keine verdächtige MU-Plugin-Logik mehr existiert.
Schnelltest
Direkt aufrufen:
/wp-admin/plugins.phpWenn WordPress meldet, dass der Benutzer nicht berechtigt ist, fehlt eine entsprechende Capability. Das Menü wurde dann nicht nur optisch ausgeblendet.
Öffnet sich die Plugin-Seite dagegen über die direkte URL, wurde wahrscheinlich lediglich der Menüpunkt entfernt, beispielsweise über remove_menu_page( 'plugins.php' ).
Administrator-Rechte für Plugins wiederherstellen
Folgenden Code vorübergehend ausführen, zum Beispiel über die functions.php des Child-Themes:
add_action( 'init', function() {
$role = get_role( 'administrator' );
if ( ! $role ) {
return;
}
$caps = [
'activate_plugins',
'install_plugins',
'update_plugins',
'delete_plugins',
'edit_plugins',
];
foreach ( $caps as $cap ) {
$role->add_cap( $cap );
}
} );Danach einmal WordPress aufrufen bzw. das Backend neu laden. Die Capabilities werden in der Datenbank gespeichert.
Anschließend den Code wieder entfernen. Er muss nicht dauerhaft ausgeführt werden.
Warum bleibt die Änderung erhalten?
add_cap() und remove_cap() ändern die gespeicherten Eigenschaften der WordPress-Rolle. Sie wirken daher anders als beispielsweise remove_menu_page(), das bei jedem Seitenaufruf erneut ausgeführt werden müsste.
Ein einmal ausgeführtes Snippet wie dieses kann deshalb noch Jahre später Auswirkungen haben:
$role = get_role( 'administrator' );
$role->remove_cap( 'activate_plugins' );Wird das Snippet anschließend gelöscht, erhält die Administrator-Rolle das Recht nicht automatisch zurück.
Fehlersuche
Wenn „Plugins“ im Backend fehlt:
/wp-admin/plugins.phpdirekt aufrufen.- Bei einer Berechtigungsfehlermeldung zuerst die Capabilities prüfen.
- Nicht davon ausgehen, dass der verursachende Code noch vorhanden sein muss.
- Erst wenn die Plugin-Seite direkt erreichbar ist, nach
remove_menu_page(),admin_menuoder vergleichbarer Menü-Logik suchen.
Achtung bei Live-Systemen
Wenn Administratoren absichtlich keine Plugins verwalten dürfen, die Rechte nicht pauschal auf dem Live-System wiederherstellen. Bei einer Demo- oder Entwicklungsumgebung können sie gezielt wieder aktiviert werden.