Kategorien
(Free-) Software Administration PHP Programmierung Wordpress

WordPress: Menüpunkte im Dashboard ausblenden

WordPress wird mittlerweile immer mehr auch als CMS eingesetzt. Da ist es oftmals hilfreich, wenn man nicht nach Rollen sondern für bestimmte User gezielt bestimmte Menüpunkte im Dashboard ausblenden kann.

Nachfolgend eine Lösung, die diese Aufgabe löst.
Aber Achtung: Dadurch werden nicht die Funktionen geblockt! Lediglich der Menüpunkt ist ausgeblendet, ist der Link bekannt, kann der entsprechende User trotzdem die Funktion nutzen!

Folgender Code kommt einfach in die functions.php Eures WP-Themes:

  // Dashboard-Menueelemente fuer bestimmte User ausblenden
  function remove_menus() {
    // Login des aktuell angemeldeten Users ermitteln
    $current_user = wp_get_current_user();
    $current_user = $current_user->user_login;
    // Eingeschraenkte User angeben (Login-Name)
    $restricted_users = array('Alex', 'gast');
    // Menuepunkte anpassen/ausblenden
    if( in_array($current_user, $restricted_users) ) {

Nun folgt zunächst der Code um Hauptmenüpunkte ausblenden zu können. Dabei wird im Standard als Parameter die verlinkte Seite angegeben:

      // Hauptmenuepunkte
      $remove_main_pages = array(//'index.php',                      // Dashboard
                                 'edit.php',                         // Posts (Artikel)
                                 'upload.php',                       // Media (Mediathek)
                                 'link-manager.php',                 // Links
                                 'edit.php?post_type=page',          // Pages (Seiten)
                                 'edit-comments.php',                // Comments (Kommentare)
                                 'themes.php',                       // Appearance (Design)
                                 'plugins.php',                      // Plugins
                                 'users.php',                        // Users (Benutzer)
		                 'tools.php',                        // Tools (Werkzeuge)
		                 'options-general.php',              // Settings (Einstellungen)
		                 'edit.php?post_type=wpsc-product',  // PlugIn WP e-Commerce
		                 'wpcf7',                            // PlugIn Contact Form 7
                                 'j-shortcodes-settings'             // PlugIn J-Shortcodes
                                );      
      foreach ($remove_main_pages as $remove_page) {
        remove_menu_page($remove_page);
      }

Anhand der Angabe für das „WP e-Commerce PlugIn“ sieht man, wie man Menüpunkte zu Custom Post Types ausblendet.
An den letzten beiden Angaben ist zu erkennen, daß es teils auch ohne die Angabe der eigentlichen PHP-Datei geht… ich empfehle hier ein wenig zu testen was Eure Menüpunkte betrifft. 😉
Der Punkt „Dashboard“ wird hier weiter angezeigt (ist hier ja auskommentiert), aber über den Folgecode in den Untermenüpunkten geändert:

      // Untermenuepunkte
      $remove_sub_pages = array('index.php update-core.php',         // Dashboard - Updates
                                'index.php wpsc-upgrades',           // Dashboard - Shop Upgrades - PlugIn WP e-Commerce
                                'users.php profile.php'              // Users - Profile
                               );      
      foreach ($remove_sub_pages as $remove_page) {
        $sub_page = explode(" ", $remove_page);
        remove_submenu_page($sub_page[0], $sub_page[1]);
      }

Da für das Ausblenden der Unterpunkte die Angabe des Haupt- und Untermenüpunktes notwendig ist, beide im Aufruf aber keine Leerzeichen enthalten können/dürfen, wurde hier die Lösung mit einem trennenden Leerzeichen zwischen den beiden Angaben gewählt um es einfach zu halten und multideminsionale Arrays zu vermeiden.
Abschließend muß die Funktion noch abgeschlossen und aufgerufen werden, damit der Code auch komplett ist und funktioniert:

    } 
    // Zusaetzlich noch den Hinweis fuer Update ausblenden
    remove_action('admin_notices', 'update_nag', 3);
  }
  add_action('admin_menu', 'remove_menus');

Hier wurde noch ein der mögliche Hinweis auf Updates (die gelbe Info im Kopf des Dashboards) ausgeblendet, damit die entsprechenden User auch hier nicht ‚versehentlich‘ updaten! 😉
Alles zusammen in die functions.php und schon habt Ihr oder Euer Kunde ein übersichtliches Menü.

Infos zum Thema und über mögliche

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.