Support » Plugins » Eigene Berechtigungen / Menüpunkte bedingt ausblenden

  • Guten Tag allerseits,
    ich suche bereits seit längerem nach einer Möglichkeit meinen Autoren Menüpunkte im wp-admin von installierten Plugins hinzuzufügen beziehungsweise wegzunehmen, also ihnen für manche Plugins Berechtigungen zu erteilen / wegzunehmen.
    Für einige Plugins funktioniert hier für mich der UserRoleEditor sehr gut. Leider jedoch bei einigen auch nicht, da die Plugins die WordPress-Standard Berechtigungen nutzen. Wenn ich also beispielsweise auf „Flipboxen“ (ein Plugin) im UserRoleEditor klicke und die Berechtigung edit_posts entferne, können die Autoren auch keine normalen Beiträge mehr veröffentlichen, obwohl sie dies dürfen.

    Mir ist geläufig, dass ich mit dem UserRoleEditor auch eigene Berechtigungen erstellen kann. Ich weiß jedoch leider nicht wie die WordPress-Syntax für eine Art PHP-Abfrage nach einer Berechtigung oder Rolle ist. Ich hoffe jemand kann mir dabei helfen (und vielleicht direkt auch die Datei nennen in die das ganze dann rein muss).

    Quasi:

    if(userHasBerechtigung(flipbox_plugin_bedienen)){
    echo Menüpunkt für Flipboxen;
    }
    

    Oder sonst auch über Rollen (die eigentlich unschönere Lösung):

    if(userHasRole(administrator, publisher)){
    echo Menüpunkt für Flipboxen;
    }
    

    Ich freue mich auf Antworten
    LG hendev

Ansicht von 2 Antworten - 1 bis 2 (von insgesamt 2)
  • Wenn es nur darum geht, bestimmte Menüpunkte trotz vorhanderen Benutzerrechte auszublenden, ist weiterhin das (inzwischen etwas angestaubte, aber funktionierende) Plugin Adminimize empfehlenswert.

    Mit Plugins wie UserRoleEditor kannst du vorhandenen Benutezrrollen Rechte verweigern oder die Rechte ergänzen. Für das Verständnis ist aber wichtig, dass viele Plugins z.B. abfragen, ob ein Benutzer Plugins installieren oder Optionen ändern kann, weil dann davon auszugehen ist, dass es sich um eine/n Administrator/-in handelt.

    Im Plugin-Developer-Handbook findest du dazu ein Kapitel, das unter anderem beschreibt, wie du mit add_cap() einer Gruppe Benutzerrechte zufügst und mit remove_cap() wieder entziehst. (Diese Änderungen haben übrigens auch dann noch Bestand, wenn das Plugin gelöscht wird!)

    Mit der Funktion current_user_can() kannst du abfragen, ob ein Benutzer bestimmte Rechte besitzt. Die Dokumentation enthält dafür ein hübsches Code-Beispiel:

    if ( ! current_user_can( 'manage_options' ) ) {
        add_filter( 'show_admin_bar', '__return_false' );
    }

    Wenn der aktuell angemeldete Benutzer also nicht das Benutzerrecht manage_options hat, wird dem Filter show_admin_bar der Wert false zurückgegeben und die Admin-Leiste wird nicht angezeigt. Das lässt sich für die Backend-Menüeinträge entsprechend abändern.

    Mit

    function wpdocs_remove_menus(){
       
      remove_menu_page( 'index.php' );                  //Dashboard
      remove_menu_page( 'jetpack' );                    //Jetpack* 
      remove_menu_page( 'edit.php' );                   //Posts
      remove_menu_page( 'upload.php' );                 //Media
      remove_menu_page( 'edit.php?post_type=page' );    //Pages
      remove_menu_page( 'edit-comments.php' );          //Comments
      remove_menu_page( 'themes.php' );                 //Appearance
      remove_menu_page( 'plugins.php' );                //Plugins
      remove_menu_page( 'users.php' );                  //Users
      remove_menu_page( 'tools.php' );                  //Tools
      remove_menu_page( 'options-general.php' );        //Settings
       
    }
    add_action( 'admin_menu', 'wpdocs_remove_menus' );

    werden alle möglichen Menüs ausgeblendet (der Kommentar am Zeilenende gibt an, um was es sich handelt). Quelle: https://developer.wordpress.org/reference/functions/remove_menu_page/#comment-1308

    Verschachtel man das nun in eine Abfrage mit current_user_can(), lässt sich das auf bestimmte Benutzer begrenzen:

    if ( ! current_user_can( 'manage_options' ) ) {
        add_action( 'admin_menu', 'wpdocs_remove_menus' );
    }

    Welche Benutzer nun welche Benutzerrechte zugewiesen bekommen und damit welcher Benutzergruppe zugehören, kannst du hier nachlesen:

    Roles and Capabilities

    Ergänzend noch ein Hinweis: Viele Benutzer/-innen lernen WordPress anhand von Büchern oder Online-Tutorials und sind darauf angewiesen, Menüeinträge so vorzufinden, wie sie in Büchern und Tutorials dargestellt werden. Es gibt häufig Fälle, bei denen Web-Entwicklern ihren Kunden Rechte entziehen, um das Backend aufgeräumter wirken zu lassen und Kunden vor unbedachten Änderungen zu schützen.
    Nicht selten landen diese Kunden dann hier, weil sie nicht verstehen, wieso sie als Administrator/-in viele Dinge in ihrer Website „nicht machen dürfen“. Besser wäre es, Kunden für diese Fälle in einem verschlossenen Umschlag Zugangsdaten zu einem Super-Administrator mit allen Benutzerrechten zu überlassen und darauf hinzuweisen, dass mit Öffnen des Umschlags die Gewährleistung erlischt.

    Thread-Starter hendev

    (@hendev)

    Wow, vielen Dank für diese sehr ausführliche Antwort.

    Ich werde mal in den nächsten Tagen versuchen einige dieser Möglichkeiten auszuprobieren.

    LG hendev

Ansicht von 2 Antworten - 1 bis 2 (von insgesamt 2)
  • Das Thema „Eigene Berechtigungen / Menüpunkte bedingt ausblenden“ ist für neue Antworten geschlossen.