Was das Backend angeht, ist WordPress recht unflexibel. Meldet sich ein Nutzer an, der keine Adminrechte hat – also die Adminrolle nicht besitzt – so sieht er trotzdem die meisten Menüeinträge und Links in der Adminbar. Um Einträge, die mangels Berechtigung sowie nutzlos sind, auszublenden, eignen sich folgende beiden Snippets.
Menüeinträge im WordPress-Admin ausblenden
Um Einträge im linksseitigen Menü im WordPress Adminbereich auszublenden, sind folgende Code-Zeilen nötig.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
function admin_menues_ausblenden(){ if(is_user_logged_in() && !current_user_can('administrator')){ remove_menu_page( 'index.php' ); //Dashboard remove_menu_page( 'edit.php' ); //Beiträge remove_menu_page( 'upload.php' ); //Medien remove_menu_page( 'edit.php?post_type=page' ); //Seiten remove_menu_page( 'edit-comments.php' ); //Kommentare remove_menu_page( 'themes.php' ); //Design remove_menu_page( 'plugins.php' ); //Plugins remove_menu_page( 'users.php' ); //Benutzer remove_menu_page( 'tools.php' ); //Werkzeuge remove_menu_page( 'options-general.php' ); //Einstellungen } } add_action('admin_init', 'admin_menues_ausblenden'); |
Mittels add_filter hängen wir uns in die WordPress-Verarbeitung in das Event „admin_init“. Dieses wird getriggert, wenn der Adminbereich geladen wird. Nun greift die admin_menues_ausblenden-Funktion. In Zeile 2 wird geprüft, ob der Nutzer angemeldet und kein Administrator ist. Wenn dem so ist, wenn die einzelnen Menüeinträge entfernt.
Sollen nur einzelne Menüpunkte entfernt werden, so sind die anderen Zeilen aus obigem Snippet zu entfernen. Die Aufschlüsselung Codezeile –> Menüeintrag steht im Kommentar am Zeilenende.
Links aus der Adminbar entfernen
Um Links aus der Adminbar (obere Menüleiste) zu entfernen, kann nachfolgendes Snippet genutzt werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function adminbar_eintraege_ausblenden() { global $wp_admin_bar; if (is_user_logged_in() && !current_user_can('administrator')) { $wp_admin_bar->remove_menu('wp-logo'); //WordPress-Logo $wp_admin_bar->remove_menu('about'); //"Über WordPress"-Link $wp_admin_bar->remove_menu('wporg'); //"WordPress.org"-Link $wp_admin_bar->remove_menu('documentation'); //"Dokumentation"-Link $wp_admin_bar->remove_menu('support-forums'); //"Support-Foren"-Link $wp_admin_bar->remove_menu('feedback'); //"Feedback"-Link $wp_admin_bar->remove_menu('site-name'); //"{Seitenname}"-Link $wp_admin_bar->remove_menu('view-site'); //"Zur Webseite"-Link $wp_admin_bar->remove_menu('updates'); //"Aktualisierung"-Link $wp_admin_bar->remove_menu('comments'); //"Kommentare"-Link $wp_admin_bar->remove_menu('new-content'); //"+ Neu"-Link $wp_admin_bar->remove_menu('my-account'); //"Nutzer-Menü"-Link } } add_action('wp_before_admin_bar_render', 'adminbar_eintraege_ausblenden'); |
Technisch funktioniert dieses Snippet analog zum Ersten. Der Unterschied besteht lediglich in dem Zeitpunkt auf den der Filter gesetzt wird.