Für eins der von mir betreuten Projekte bin ich nun etwas detaillierter mit dem Thema Rollen und Rechte bei WordPress in Kontakt gekommen. Konkret ging es um die Frage, wie man Seiten nur für bestimmte Benutzer editierbar macht.

Wie immer suchte ich nach einer schnellen und praktikablen Lösung und dachte, sowas müsse doch im WordPress Core schon irgendwie enthalten sein. Dies ist jedoch leider nicht der Fall, daher begann die Suche nach einem passenden Plugin.

Mit dem WPFront User Role Editor bin ich letztlich fündig geworden.

Rollen und Rechte in WordPress

Warum ist ein solches Plugin eigentlich überhaupt notwendig? Wie funktioniert die Rollenvergabe im WordPress denn ganz konkret? Und warum kommt dieses Thema erst jetzt auf den Schirm, wo ich WordPress doch schon lange einsetze?

Zumindest die letzte Frage ist schnell beantwortet. Bisher bin ich üblicherweise Administrator in den jeweiligen Instanzen und teilweise gibt es zusätzlich dazu Nutzer, die als Redakteure die Seiten und Beiträge pflegen. Mit steigender Anzahl an Seiten und Nutzern, möchte man aber weiter differenzieren und da kommt man irgendwann mit den Standard-Rollen von WordPress an seine Grenzen.

Standardmäßig bietet WordPress folgende Rollen:

  • Abonnent
  • Mitarbeiter
  • Autor
  • Redakteur
  • Administrator

Die Rollen sind hierbei nach Umfang der Privilegien sortiert.

Als Abonnent kann man praktisch nur kommentieren und sein eigenes Profil verwalten. Die Rolle ist relevant, wenn man Kommentare nicht für jeden Besucher, sondern nur für registrierte Nutzer erlauben möchte. In den meisten Fällen braucht man diese Rolle daher nicht, weil entweder Kommentare gar nicht vorkommen oder auch ohne Anmeldung möglich sind.

Ein Mitarbeiter darf zwar eigene Beiträge schreiben, diese aber nicht selbst veröffentlichen. Er darf dabei auch keine Dateien hochladen und Seiten sind für ihn sowieso tabu. Im Grunde also ebenfalls eine sehr limitierte Rolle.

Spannender sind da schon die Autoren. Diese Gruppe darf eigenständig Beiträge inklusive Medienelemente erstellen und auch veröffentlichen. Sie hat weitreichenden Zugang zur Medien-Verwaltung und kann dort u.a. auch Dokumente anderer Nutzer ändern oder löschen. Auf Seiten haben Autoren aber keinen Zugriff.

Erst in der Rolle Redakteur erhält man vollen Zugang zu allen Beiträgen und Seiten in WordPress. Zudem natürlich auch auf die Medien-Verwaltung und man darf Kommentare moderieren. Außerdem kann man Kategorien verwalten und HTML in Beiträge direkt einfügen. Da erst auf diesem Level Seiten bearbeitet werden können, erhalten viele User diese Rolle, die aber grundsätzlich sehr weitreichend ist, weil man damit ALLE Seiten und Beiträge, also auch die von anderen Usern, bearbeiten kann.

Der Vollständigkeit halber sind noch die Administratoren erwähnt. Hier sollte es möglichst wenig Nutzer mit dieser Rolle geben, im besten Fall genau einen. Administratoren dürfen alles, einschließlich der Löschung von Nutzern und der Verwaltung von Plugins und Themes.

Wie man sieht, sind die Privilegien im Bereich der Beiträge in verschiedene Rollen aufgeteilt, während die Rechte bei den Seiten alle an einer Rolle hängen. Dies lässt sich historisch begründen, da WordPress ja in erster Linie als Blog-System entstanden ist und WordPress-Websites oft nur wenige Seiten enthielten. Mittlerweile wird WordPress aber immer mehr als reguläres CMS auf Websites mit vielen Unterseiten eingesetzt und dort stößt diese gewachsene Rollenstruktur an ihre Grenzen.

WordPress Plugins: Qual der Wahl

Eine der großen Stärken von WordPress ist seine Erweiterbarkeit. Man findet eigentlich für fast jeden Zweck ein bestehendes Plugin, was die gewünschte Funktion abdeckt. Die Schwierigkeit ist nur, das passende Plugin zu finden.

Das Schöne in der Welt von WordPress ist, dass es viele verschiedene Plugins zur Erweiterung gibt.

Das Problematische in der Welt von WordPress ist, dass es viele verschiedene Plugins zur Erweiterung gibt.

ANONYMER WORDPRESS NUTZER

Meine Suche startet auf der Pluginseite von WordPress. Hier finden sich bei der Suche nach „user roles“ einige interessante Einträge, wovon ich die wichtigsten mal kurz hervorheben möchte:

Entschieden habe ich mich letztlich für WPFront User Role Editor von Syam Mohan, da es meine gewünschte Funktionalität in der freien Variante abdeckt, angenehm unaufgeregt und unkomplex daher kommt, datenschutztechnisch sauber aussieht und die Bewertungen fast ausschließlich positiv sind.

WordPress Plugin: WPFront User Role Editor

Damit kann man über selbsterklärende Dialoge die bestehenden Rollen anpassen oder neue erstellen und den eigenen Wünschen entsprechend konfigurieren. Für mich sind die Privilegien dabei ausreichend selbsterklärend. Wenn nicht, hilft ein Klick auf das Fragezeichen dahinter oder eine kurze Google-Recherche.

Die fehlende deutsche Übersetzung stellt aus meiner Sicht auch kein Problem dar, auch weniger erfahrene Nutzer sollten anhand der einfachen Struktur gut zurecht kommen. Angenehm ist auch, dass keine eigenen Dialogstile die Usability erschweren, sondern sich alles schön nach dem WordPress Standard verhält.

Zurück zur Sache

Ok, damit zurück zur Ausgangsfrage: Wie kann ich Benutzer auf bestimmte Seiten begrenzen, so dass sie nur diese bearbeiten können?

Dafür habe ich erstmal eine deutlich reduzierte Rolle definiert, die ausschließlich die Bearbeitung eigener Seiten erlaubt:

Privilegien für die Bearbeitung eigener Seiten

Wichtig ist hierbei, dass die Privilegien, die mit _other gekennzeichnet sind, nicht gewählt sind. Damit wird das Recht zur Bearbeitung für Seiten oder Medieneinträge nur für die eigenen Inhalte erlaubt.

Die neu erstellte Rolle kann man dann über die Benutzerverwaltung einfach dem gewünschten Nutzer zuweisen:

Zuweisung der neuen Benutzerrolle

Als letztes ist nun noch sicherzustellen, dass die gewünschten Seiten auch dem richtigen Nutzer gehören. Dazu kann man einfach in der Liste der Seiten das Feld Autor prüfen und bei Bedarf anpassen. Das geht am leichtesten über den Quick-Edit-Button in der Liste der Seiten:

Autor einer Seite per Quick-Edit ändern

Der entsprechende Nutzer kann nun nur noch seine eigenen Seiten bearbeiten, während Redakteure und Administratoren natürlich weiterhin Zugriff auf diese Seiten haben. Das löst meine Problemstellung zufriedenstellend :)

Fazit

Mit dem Plugin WPFront User Role Editor ist es mir gelungen eine zusätzliche Rolle im WordPress zu definieren und so die im Vergleich dazu weitreichenden Kompetenzen eines Redakteurs auf das notwendige Maß zu beschränken.

Die Lösung funktioniert ohne Probleme, ist kostenfrei verfügbar und schnell zu verstehen. Minimalen Punktabzug gibt es für die fehlende deutsche Übersetzung, die aber, da man das Plugin nicht so oft benötigt, nicht ins Gewicht fällt.

Keiner Wermutstropfen: das beschriebene Vorgehen klappt natürlich nur, wenn man genau einen Bearbeiter für die Seite auf diese Weise beschränken möchte. Wenn man mehr als einen Autor pro Seite berechtigen möchte, dieser aber nicht Redakteur oder Administrator sein soll, hilft wohl nur die oben genannten alternativen Plugins nochmal genauer unter die Lupe zu nehmen.