WordPress: Neue Benutzerrollen ohne Plugin erstellen

In WordPress können eigene Benutzerroller erstellt werden, falls die 5 von WordPress vorgegebenen Benutzerrollen nicht den Bedürfnissen entsprechen. Neue Benutzerrollen ermöglichen eine bessere Differenzierung der einzelnen Rollen und Benutzer und somit eine weit bessere Möglichkeit, individuell auf den jeweiligen Benutzer (und auf seine Rolle) eingehen zu können.

Man könnte auch die bereits vorhandenen Benutzerprofile anpassen, was jedoch nicht immer die beste Lösung ist, da sich hier leichter Fehler bei der Editierung der Rechtevergabe einschleichen können. Auch sind neue Benutzerrollen besser, wenn es sich um Benutzerrollen handelt, welche der eigentlichen Verwaltung des WordPress ziemlich fern sind. Hier im Beispiel sind das Autoverkäufer und Interessenten, welche in unserem Theme „MotorMarket“ erstellt werden. MotorMarket – eine Verkaufsplattform für Autoverkäufer & -händler auf Basis eines WordPress-Themes.

Neue Benutzerrollen: Verkäufer und Interessenten

Beide Benutzerrollen werden nicht nur der eigentlichen Verwaltung der Website aus Sicherheitsgründen möglichst fern gehalten und bedürfen daher eine komplett angepasste Rechtevergabe. Auch unterscheiden sich die beiden Rollen im Beispiel erheblich und müssen mit komplett anderen Rechten ausgestattet werden.

Aber keine Sorge: was hier kompliziert klingt, ist einfacher als wahrscheinlich gedacht und schnell getan.

Los gehts: functions.php

Eine neue Benutzerrolle wird zeitgleich mit seinen Berechtigungen erstellt. Die Rolle wird also benannt und sogleich definiert. Der PHP-Code, welcher dies tätigt, wird in die functions.php geschrieben (oder alternativ inkludiert). Nachdem die function.php entsprechend erweitert wurde, muss der Webserver die functions.php einmal neu laden und die neue Rolle ist verfügbar.

(Wie bitte? Die functions.php neu laden? Keine Sorge, das tut sie automatisch bei jedem Seitenaufruf deines WordPress, egal ob der Aufruf im Front- oder Backend stattfindet – also schon beim nächsten Aufruf, um beispielsweise einen neuen Benutzer in dieser Rolle zu erstellen.)

Folgender Code in der functions.php erstellt die Benutzerrolle „Seller“:

$newuser = add_role( 'seller', __('Seller'), array() );
Leicht verständlich: Die Variable ist austauschbar und beinhaltet den Befehl add_role (Rolle hinzufügen), welche den Slug seller bekommt. Als Name wird Seller gewählt, was sich hier im Beispiel dann aber auch leicht übersetzen lassen wird. Zum Schluss kommt ein Array, welches die Angaben zur Berechtigungsvergabe enthält. Obiges Beispiel würde zwar tatsächlich eine Benutzerrolle erstellen, welche so aber keine Funktionalität hat.

Daher: folgender Code erstellt die Benutzerrolle „Seller“ und gibt ihr im Array sogleich Berechtigungen und Restriktionen:

$newuser = add_role( 'seller', __('Seller'), array(
'read' => true, // true erlaubt das reguläre lesen
'edit_posts' => true, // Erlaubt eigene Beiträge (Posts) zu editieren
'edit_pages' => false, // Verbietet Seiten (Pages) zu editieren
'edit_others_posts' => false, // Verbietet Beiträge anderer Benutzer zu editieren
'create_posts' => true, // Erlaubt neue Beiträge (Posts) zu erstellen
'manage_categories' => false, // Verbietet Beitrags-Kategorien zu managen
'publish_posts' => true, // Erlaubt das Veröffentlichen eigener Beiträge (Andererseits würden sie als Entwurf gespeichert werden)
'edit_themes' => false, // Verbietet das Theme zu editieren
'install_plugins' => false, // Verbietet neue Plugins zu installieren
'update_plugin' => false, // Verbietet Plugins zu aktualisieren
'update_core' => false // Verbietet den WordPress-Core zu updaten
)
);

Die so erstellte Benutzerrolle hat nun sehr angepasste Berechtigungen. Um diese Rolle, und die Gruppe der Benutzer derer, aber auch weitestgehend von wichtigen Einstellungen fern zu halten, wie weiter oben im Beitrag als Ziel definiert, sollten noch weitere Zugangs- und Sicherheitsmechanismen eingebaut werden – was aber nicht Inhalt des Artikels ist. Benutzerrolle erstellt, funktioniert, alles fein.

Im Grunde kann nun der Eintrag aus der functions.php wieder gelöscht werden, was auch in Bezug auf Dateigröße und Ladegeschwindigkeit Sinn macht. Ich empfehle jedoch, den Vorgang ordentlich zu protokollieren, um später einfach nachschauen zu können, welcher Benutzerrolle welche Rechte gegeben wurden.

Fragen, Anregungen oder konstruktive Kritik? Ich freue mich über den Dialog!

0 Kommentare

Dein Kommentar

Want to join the discussion?
Feel free to contribute!

Schreibe einen Kommentar

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