Die WordPress Admin-Leiste ist eines der charakteristischen Elemente des Content-Management-Systems. Diese schwarze Leiste am oberen Bildschirmrand enthältSchnellzugriff-links zu verschiedenen Admin-Bereichen. Für Administratoren und Editoren ist sie unverzichtbar, aber für normale Benutzer wie Abonnenten, Kunden oder Gastautoren kann sie störend sein und das professionelle Erscheinungsbild Ihrer Website beeinträchtigen.
In diesem umfassenden Guide lernen Sie verschiedene Methoden, um die Admin-Leiste für Nicht-Admins auszublenden, von einfachen Code-Schnipseln bis hin zu fortgeschrittenen Techniken mit Plugins und CSS.
Was ist die WordPress Admin-Leiste?
Die WordPress Admin-Leiste, intern als “Toolbar” bezeichnet, wurde mit WordPress 3.1 eingeführt. Sie bietet schnellen Zugriff auf häufig benötigte Funktionen:
Standard-Elemente der Admin-Leiste:
- WordPress-Logo mit Admin-Untermenü
- Link zum Dashboard
- Neue Beiträge/Medien hinzufügen
- Kommentare-Übersicht
- Benutzerprofil-Link
- Suchfeld (je nach Theme)
Warum ist sie für Nicht-Admins problematisch?
Bei Mitgliederseiten, WooCommerce-Shops, bbPress-Foren oder Benutzer-Portalen ist die Standard-WordPress-Admin-Leiste oft störend:
- Professionelles Aussehen: Die Admin-Leiste signalisiert “Backend”, was bei reinen Frontend-Erfahrungen unpassend ist
- Ablenkung: Kunden sollen sich auf Produkte konzentrieren, nicht auf Admin-Links
- Benutzererfahrung: Bei mobilen Geräten nimmt die Leiste wertvollen Platz ein
- Branding: Weiß label-Lösungen werden durch die Leiste unterbrochen
- Sicherheit: Manchmal möchte man verhindern, dass Benutzer überhaupt wissen, dass WordPress verwendet wird
Methode 1: PHP-Code-Lösung (Empfohlen)
Die sauberste Methode ist die Verwendung von PHP-Code in der functions.php-Datei Ihres Themes oder eines seitenspezifischen Plugins.
Grundlegende Lösung: Nur für Administratoren anzeigen
/**
* Admin-Leiste nur für Administratoren anzeigen
*
* Diese Funktion blendet die Admin-Leiste für alle Benutzer aus,
* die keine Administratoren sind.
*/
add_action('after_setup_theme', 'wppoland_remove_admin_bar');
function wppoland_remove_admin_bar() {
// Prüfe, ob der Benutzer Administrator ist
if ( ! current_user_can( 'administrator' ) ) {
// Wenn nicht, zeige keine Admin-Leiste
show_admin_bar( false );
}
}
Erklärung des Codes:
after_setup_themeHook: Wird ausgeführt, sobald das Theme geladen istcurrent_user_can('administrator'): Prüft, ob der aktuelle Benutzer die Administrator-Rolle hatshow_admin_bar(false): Deaktiviert die Admin-Leiste
Erweiterte Lösung: Bestimmte Rollen ausblenden
/**
* Admin-Leiste basierend auf Benutzerrollen ausblenden
*/
add_action('after_setup_theme', 'wppoland_remove_admin_bar_by_role');
function wppoland_remove_admin_bar_by_role() {
// Nur auf dem Frontend ausführen
if ( is_admin() ) return;
// Aktuellen Benutzer abrufen
$current_user = wp_get_current_user();
// Rollen, die die Admin-Leiste sehen sollen
$allowed_roles = array( 'administrator', 'editor', 'author' );
// Prüfen, ob Benutzer eine erlaubte Rolle hat
if ( array_intersect( $allowed_roles, $current_user->roles ) ) {
return; // Keine Änderung für erlaubte Rollen
}
// Für alle anderen: Admin-Leiste ausblenden
show_admin_bar( false );
}
Lösung mit Capabilities statt Rollen
/**
* Admin-Leiste basierend auf Capabilities ausblenden
*
* Diese Methode ist flexibler, da sie auf Fähigkeiten
* statt auf Rollennamen basiert.
*/
add_action('after_setup_theme', 'wppoland_remove_admin_bar_by_capability');
function wppoland_remove_admin_bar_by_capability() {
// Admin-Leiste nur anzeigen, wenn Benutzer publish_posts capability hat
// und nicht im Admin-Bereich ist
if ( ! current_user_can( 'publish_posts' ) && ! is_admin() ) {
show_admin_bar( false );
}
}
Wichtige WordPress-Capabilities:
manage_options: Nur Administratorenedit_posts: Editoren, Autoren, Administratorenpublish_posts: Autoren, Editoren, Administratorenedit_pages: Seiten bearbeiten
Bedingte Anzeige basierend auf URL oder Seite
/**
* Admin-Leiste auf bestimmten Seiten ausblenden
*/
add_action('after_setup_theme', 'wppoland_remove_admin_bar_on_specific_pages');
function wppoland_remove_admin_bar_on_specific_pages() {
// Prüfen, ob Benutzer kein Administrator ist
if ( current_user_can( 'administrator' ) ) {
return; // Administratoren sehen immer die Leiste
}
// Seiten, auf denen die Leiste ausgeblendet werden soll
$pages_to_hide = array(
'/mitgliederbereich/',
'/kundenportal/',
'/shop/',
'/kurs/',
);
// Aktuelle URL prüfen
$current_url = $_SERVER['REQUEST_URI'];
foreach ( $pages_to_hide as $page ) {
if ( strpos( $current_url, $page ) !== false ) {
show_admin_bar( false );
break;
}
}
}
Methode 2: CSS-Lösung
Eine alternative Methode ist das Ausblenden der Admin-Leiste per CSS. Dies hat den Vorteil, dass keine PHP-Kenntnisse erforderlich sind und die Änderung sofort ohne Theme-Update wirksam wird.
CSS-Code für style.css oder Customizer
/* Admin-Leiste für alle Nicht-Administratoren ausblenden */
body:not(.logged-in) #wpadminbar {
display: none !important;
}
/* Oder spezifischer: */
/* Diese Klasse wird von WordPress nicht automatisch hinzugefügt */
/* Sie müsste per PHP oder JavaScript gesetzt werden */
/* Alternative: Admin-Leiste komplett ausblenden */
/* Achtung: Dies blendet sie für ALLE Benutzer aus */
#wpadminbar {
}
JavaScript-Lösung für dynamisches Ausblenden
// JavaScript, das die Admin-Leiste für Nicht-Admins ausblendet
// Fügen Sie dies in Ihrer theme.js oder einem benutzerdefinierten Skript hinzu
(function() {
// Prüfen, ob der Benutzer eingeloggt ist (aber nicht Admin)
// Diese Information muss vom PHP-Code übertragen werden
var isNonAdmin = document.body.classList.contains('user-role-subscriber') ||
document.body.classList.contains('user-role-customer');
if ( isNonAdmin ) {
var adminBar = document.getElementById('wpadminbar');
if ( adminBar ) {
adminBar.style.display = 'none';
}
// Body nach oben verschieben (Admin-Leiste nimmt Platz ein)
document.body.style.marginTop = '0';
}
})();
Kombination: PHP setzt Klasse, CSS blendet aus
/**
* Body-Klasse für Benutzerrollen hinzufügen
*/
add_filter('body_class', 'wppoland_add_role_to_body_class');
function wppoland_add_role_to_body_class( $classes ) {
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
foreach ( $user->roles as $role ) {
$classes[] = 'user-role-' . $role;
}
}
return $classes;
}
/* CSS zum Ausblenden basierend auf Body-Klasse */
.user-role-subscriber #wpadminbar,
.user-role-contributor #wpadminbar,
.user-role-customer #wpadminbar {
}
/* Kein oberer Margin wenn Admin-Leiste ausgeblendet ist */
.user-role-subscriber body,
.user-role-contributor body,
.user-role-customer {
margin-top: 0 !important;
}
Methode 3: Plugin-Lösungen
Für Benutzer, die keine Code-Änderungen vornehmen möchten, gibt es mehrere Plugins, die diese Funktionalität bieten.
Empfohlene Plugins
1. Admin Bar Manager
Das umfassendste Plugin für die Verwaltung der Admin-Leiste:
- Einfache Rollen-Auswahl
- Whitelist/Blacklist für bestimmte Seiten
- Keine Code-Kenntnisse erforderlich
- Regelmäßige Updates
2. Hide Admin Bar Based on User Role
Spezialisiert auf rollenbasiertes Ausblenden:
- Einfache Konfiguration
- Unterstützt alle WordPress-Standardrollen
- Kann benutzerdefinierte Rollen handhaben
- Leichtgewichtig
3. White Label CMS
Für Agenturen und Entwickler:
- Umfassende White-Label-Funktionen
- Admin-Leisten-Kontrolle
- Anpassbares Dashboard
- Benutzerdefinierte Menüs
Plugin vs. Code: Vor- und Nachteile
| Kriterium | Plugin | Code |
|---|---|---|
| Einfachheit | ✅ Einfach zu installieren | ⚠️ Erfordert technisches Wissen |
| Performance | ⚠️ Zusätzliche Datenbankabfragen | ✅ Kein Overhead |
| Wartung | ⚠️ Updates erforderlich | ✅ Teil des Themes |
| Flexibilität | ⚠️ Durch Plugin begrenzt | ✅ Volle Kontrolle |
| Konflikte | ⚠️ Kann mit anderen Plugins kollidieren | ✅ Geringeres Risiko |
Fortgeschrittene Techniken
Ausblenden nur auf mobilen Geräten
/**
* Admin-Leiste nur auf Desktop anzeigen
*/
add_action('after_setup_theme', 'wppoland_admin_bar_mobile_only');
function wppoland_admin_bar_mobile_only() {
// Prüfen, ob Benutzer kein Administrator ist
if ( current_user_can( 'administrator' ) ) {
return;
}
// Auf mobilen Geräten ausblenden
if ( wp_is_mobile() ) {
show_admin_bar( false );
}
}
Deaktivieren mit Shortcode für bestimmte Seiten
/**
* Shortcode zum Ausblenden der Admin-Leiste auf bestimmten Seiten
* Verwendung: [hide_admin_bar]
*/
add_shortcode('hide_admin_bar', 'wppoland_shortcode_hide_admin_bar');
function wppoland_shortcode_hide_admin_bar() {
if ( ! current_user_can( 'administrator' ) && ! is_admin() ) {
show_admin_bar( false );
}
return '';
}
Ausblenden für bestimmte Benutzer
/**
* Admin-Leiste für bestimmte Benutzer-IDs ausblenden
*/
add_action('after_setup_theme', 'wppoland_remove_admin_bar_for_users');
function wppoland_remove_admin_bar_for_users() {
// Benutzer-IDs, die keine Admin-Leiste sehen sollen
$hidden_users = array( 5, 12, 23, 45 );
$current_user_id = get_current_user_id();
if ( in_array( $current_user_id, $hidden_users ) && ! current_user_can('manage_options') ) {
show_admin_bar( false );
}
}
Mit AJAX: Admin-Leiste nach Login-Aktion umschalten
/**
* AJAX-Handler zum Umschalten der Admin-Leiste
*/
add_action('wp_ajax_toggle_admin_bar', 'wppoland_toggle_admin_bar_ajax');
add_action('wp_ajax_nopriv_toggle_admin_bar', 'wppoland_toggle_admin_bar_ajax');
function wppoland_toggle_admin_bar_ajax() {
$user_id = get_current_user_id();
$show = isset( $_POST['show'] ) && $_POST['show'] === 'true';
update_user_meta( $user_id, 'show_admin_bar_front', $show );
wp_send_json_success();
}
Kompatibilität mit Page Buildern
Bei der Verwendung von Page Buildern wie Elementor, Divi oder Beaver Builder gibt es zusätzliche Überlegungen.
Elementor
Elementor setzt eigene Hooks für die Admin-Leiste. Wenn die Leiste nicht ausgeblendet wird:
/**
* Elementor-Kompatibilität: Admin-Leiste ausblenden
*/
add_action('elementor/init', 'wppoland_elementor_admin_bar_fix');
function wppoland_elementor_admin_bar_fix() {
if ( ! current_user_can( 'administrator' ) ) {
show_admin_bar( false );
}
}
Divi Theme
Divi hat eigene Admin-Leisten-Einstellungen:
/**
* Divi Theme: Admin-Leiste für Nicht-Admins ausblenden
*/
add_action('wp', 'wppoland_divi_admin_bar_fix', 1);
function wppoland_divi_admin_bar_fix() {
if ( ! current_user_can( 'administrator' ) ) {
show_admin_bar( false );
}
}
WooCommerce
Bei WooCommerce-Shops möchten Sie oft die Admin-Leiste für Kunden ausblenden:
/**
* WooCommerce: Admin-Leiste nur für Shop-Manager und Admins anzeigen
*/
add_action('after_setup_theme', 'wppoland_woocommerce_admin_bar');
function wppoland_woocommerce_admin_bar() {
// Erlaubte Rollen
$allowed_roles = array( 'administrator', 'shop_manager' );
$current_user = wp_get_current_user();
if ( ! array_intersect( $allowed_roles, $current_user->roles ) ) {
show_admin_bar( false );
}
}
Best Practices und Empfehlungen
1. Immer is_admin() prüfen
Stellen Sie sicher, dass Ihre Funktion nur auf dem Frontend ausgeführt wird, um unerwünschte Effekte im Backend zu vermeiden:
// Korrekt:
if ( ! is_admin() && ! current_user_can('administrator') ) {
show_admin_bar( false );
}
// Falsch (kann Admin-Bereich beeinflussen):
if ( ! current_user_can('administrator') ) {
show_admin_bar( false );
}
2. Capabilities statt Rollen verwenden
Capabilities sind flexibler und zukunftssicherer:
// Besser (Capabilities):
if ( ! current_user_can('edit_posts') ) {
show_admin_bar( false );
}
// Weniger flexibel (Rollen):
if ( ! in_array( 'administrator', $current_user->roles ) ) {
show_admin_bar( false );
}
3. In MU-Plugin auslagern
Für bessere Wartung empfiehlt sich die Auslagerung in ein MU-Plugin:
// Datei: wp-content/mu-plugins/admin-bar-control.php
<?php
/**
* MU-Plugin: Admin-Leisten-Kontrolle
* Aktiviert automatisch, kann nicht deaktiviert werden
*/
defined( 'ABSPATH' ) || exit;
add_action('after_setup_theme', 'mup_admin_bar_control');
function mup_admin_bar_control() {
if ( ! current_user_can( 'administrator' ) && ! is_admin() ) {
show_admin_bar( false );
}
}
4. Dokumentation im Code
Dokumentieren Sie Ihren Code für zukünftige Wartung:
/**
* Admin-Leiste für Nicht-Admins ausblenden
*
* Warum: Verbessert die Benutzererfahrung auf der Mitgliederseite
* Wo: functions.php oder mu-plugins/admin-bar-control.php
* Getestet: WordPress 6.4+, PHP 8.0+
*
* @since 2024-01-15
* @author WPPoland Team
*/
Fehlersuche und häufige Probleme
Problem: Admin-Leiste wird nicht ausgeblendet
Ursachen und Lösungen:
-
Theme-Override: Das Theme setzt show_admin_bar zurück
// Fügen Sie dies mit höherer Priorität hinzu add_action('after_setup_theme', 'wppoland_force_remove_admin_bar', 0); -
Plugin-Konflikt: Ein anderes Plugin zeigt die Leiste an
// Entfernen Sie alle anderen show_admin_bar(true) Aufrufe remove_all_actions('show_admin_bar'); -
Cache: Caching-Plugin zeigt alte Version
// Leeren Sie den Cache nach der Änderung
Problem: Mobile Anzeige
Die Admin-Leiste nimmt auf mobilen Geräten Platz ein. Wenn Sie sie ausblenden:
/* Beheben des "fehlenden" Platzes */
@media screen and (max-width: 782px) {
html.wp-toolbar {
padding-top: 0 !important;
}
}
Problem: Login-Redirect
Nach dem Login wird die Admin-Leiste kurz angezeigt:
/**
* Verzögertes Ausblenden der Admin-Leiste
*/
add_action('wp_footer', 'wppoland_delayed_admin_bar_hide');
function wppoland_delayed_admin_bar_hide() {
if ( ! current_user_can('administrator') && ! is_admin() ) {
echo '<style>#wpadminbar { display: none !important; }</style>';
}
}
FAQ – Häufig gestellte Fragen
Beeinflusst das Ausblenden der Admin-Leiste die Funktionalität?
Nein. Das Ausblenden der Admin-Leiste entfernt nur die visuelle Darstellung. Benutzer können weiterhin über das Dashboard auf Admin-Funktionen zugreifen, wenn sie die entsprechenden Berechtigungen haben.
Kann ich die Admin-Leiste für bestimmte Seiten ausblenden und für andere anzeigen?
Ja. Sie können bedingte Logik implementieren, die die Admin-Leiste basierend auf der aktuellen URL, dem Seitennamen oder benutzerdefinierten Feldern ein- oder ausblendet.
Was passiert mit dem “Mein Name”-Link im Admin-Bereich?
Der “Mein Name”-Link im WordPress-Admin-Bereich ist von der Frontend-Admin-Leiste getrennt. Er bleibt sichtbar, wenn Benutzer das Backend besuchen.
Funktioniert das Ausblenden mit dem Gutenberg-Editor?
Ja. Das Ausblenden der Frontend-Admin-Leiste beeinflusst nicht die Funktionen des Gutenberg-Editors im Backend.
Kann ich die Admin-Leiste nur für eingeloggte Gäste ausblenden?
Ja. Der Code prüft automatisch current_user_can(), was nur für eingeloggte Benutzer relevant ist. Gäste sehen ohnehin keine Admin-Leiste.
Wie kann ich testen, ob die Lösung funktioniert?
- Erstellen Sie einen Testbenutzer mit der Rolle “Abonnent”
- Loggen Sie sich als dieser Benutzer ein
- Besuchen Sie eine Frontend-Seite
- Prüfen Sie, ob die Admin-Leiste oben sichtbar ist
- Loggen Sie sich als Administrator ein und prüfen Sie, ob die Leiste sichtlich bleibt
Vollständige Implementierung
Hier ist eine umfassende, produktionsreife Lösung:
<?php
/**
* Admin-Leisten-Kontrolle für WPPoland
*
* Sicherheits- und UX-Optimierung für Mitgliederseiten
*
* @package WPPoland
* @version 2.0.0
* @author WPPoland Team
* @license GPL v2 oder höher
*/
defined( 'ABSPATH' ) || exit;
/**
* Hauptfunktion zur Admin-Leisten-Kontrolle
*/
function wppoland_control_admin_bar() {
// Administratoren behalten immer die Admin-Leiste
if ( current_user_can( 'administrator' ) ) {
return;
}
// Im Admin-Bereich immer anzeigen (für Backend-Bearbeitung)
if ( is_admin() ) {
return;
}
// Frontend: Admin-Leiste ausblenden
show_admin_bar( false );
}
add_action('after_setup_theme', 'wppoland_control_admin_bar', 5);
/**
* Helper-Funktion: Prüfen ob Admin-Leiste erlaubt ist
*
* @param int|WP_User $user Benutzer-ID oder Objekt
* @return bool
*/
function wppoland_is_admin_bar_allowed( $user = null ) {
if ( ! $user ) {
$user = wp_get_current_user();
}
if ( ! $user instanceof WP_User ) {
$user = get_userdata( $user );
}
if ( ! $user ) {
return false;
}
return user_can( $user, 'administrator' ) ||
user_can( $user, 'editor' ) ||
user_can( $user, 'author' );
}
Zusammenfassung
Das Ausblenden der WordPress Admin-Leiste für Nicht-Admins ist eine wichtige UX-Optimierung für Websites mit eingeloggten Benutzern. Die empfohlene Methode ist die PHP-Code-Lösung in der functions.php oder als MU-Plugin, da sie keine zusätzlichen Ressourcen verbraucht und vollständige Kontrolle bietet.
Die wichtigsten Punkte:
- Verwenden Sie
current_user_can()für flexible Berechtigungsprüfungen - Prüfen Sie immer
is_admin(), um das Backend nicht zu beeinträchtigen - Testen Sie mit verschiedenen Benutzerrollen
- Dokumentieren Sie Ihren Code für zukünftige Wartung
- Bei Konflikten mit Page Buildern: spezielle Hooks verwenden
Mit diesen Techniken schaffen Sie eine professionelle, benutzerfreundliche Erfahrung für Ihre nicht-administrativen Benutzer, während Administratoren weiterhin alle benötigten Tools zur Verfügung haben.



