WordPress Rechte anpassen (HowTo)
Allgemeines
Standard-Benutzerrollen und -Berechtigungen bei WordPress
Die Berechtigungen nehmen mit jeder Benutzerrollen zu.
Abonnent
- darf nur lesen
- sofern Benutzer sich selbst auf dem Blog registrieren können, sollte diese Benutzerrolle der Standard sein
Mitarbeiter
- kann Beiträge schreiben, allerdings nicht veröffentlichen
- Optimal ist diese Rolle für Gast-Autor
Autor
- darf Beiträge veröffentlichen
- bestehende Beiträge editieren oder löschen
- Medieninhalte hinzufügen
Redakteur
- sehr mächtig
- darf im Grunde genommen alles tun was mit der Verwaltung der Website-Inhalte zu tun hat
- kann also Artikel aller Benutzer verändern oder veröffentlichen
- Seiten erstellen
- Kommentare moderieren
- Kategorien verwalten
- passwortgeschützte Artikel lesen
- hat allerdings keinen Einfluss auf
- das Design
- die Funktionalität der Website
Als Administrator
- darf alles, u.a.:
- Benutzer anlegen oder löschen
- Benutzer mit anderen Rollen (Rechten) ausstatten
- Design der Website verändern
- Themes, Plugins und Widgets installieren und verwalten
Zusatz-Benutzerrollen und -Berechtigungen
- notwendig, da von uns genutzte Themes und Plugins viele (meist) unnötige und/oder ungenutzte Module und Optionen mitbringen
- oberstes Ziel ist, dass der Kunde mit seinem Account so viel wie nötig und so wenig wie möglich bearbeiten kann
- "Bereinigung" der Berechtigungen auf das nötige funktioniert nur sinnvoll durch die Kombination von 2 Plugins ("Members" und "Adminimize")
- neue Rolle anlegen, um ...
- ... Standardrollen nicht zu beeinflussen (Transparenz, Nachhaltigkeit)
- ... neue Rolle anlegen und Rechte im Allgemeinen hinzufügen zu können
- ... neue Rolle "Manager" anlegen und Rechteumfang zwischen Admin und Redakteur im Speziellen hinzufügen zu können (vor Allem Menü und/oder Widgets bearbeiten)
Vorangegangene(r) Prozess(e)
TBD via Link zu anderem HowTo
Arbeitsschritte (Prozess) mit Plugin
Schritt 1: Plugins installieren & aktivieren
- "Members" installieren & aktivieren (https://de.wordpress.org/plugins/members/)
- "Adminimize" installieren & aktivieren (https://de.wordpress.org/plugins/adminimize/)
Schritt 2: Allgemeinen Einstellungen vornehmen
- WordPress-Core-Modul "Einstellungen" --> "Members"
Schritt 3: Neue Rolle in "Members" erstellen
- neue Rollen anlegen durch...
- a) ...kopieren: WordPress-Core-Modul "Benutzer" --> "Rollen" (mit dem Namen "Manager")
- b) ...hinzufügen: WordPress-Core-Modul "Benutzer" --> "Neue Rolle hinzufügen" --> "Duplizieren" (und den Namen "Manager" vergeben)
Schritt 4: Rechte in "Adminimize" deaktivieren
- im WordPress-Backend-Modul "Einstellungen" können unter "Adminimize" --> die konkrete Rechte eingesehen bzw. konfiguriert werden
- im einfachsten Fall reicht es zunächst für die neue Rolle "Manager" alle ungenutzten bzw. unnützen Backend-Module auszublenden --> "Menü-Einstellungen" --> jeweils oberste Ebene (rote Checkbox) anhaken
Schritt 5: Rechte in "WPBakery Page Builder" (de-)aktivieren
- im WordPress-Backend-Modul "WPBakery Page Builder" können unter "Allgemeine Einstellungen" --> "Role Manager" die konkreten Rechte (z. B. Content-Elemente) eingesehen bzw. konfiguriert werden
Schritt 6: Benutzern neue Rolle zuweisen & testen
- einen Testaccount anlegen und dieser die Rolle "Manager" zuweisen
- WordPress-Backend-Modul "Benutzer" --> Benutzer XY "bearbeiten" --> "Rollen" | "Benutzerrollen" --> "Manager" anhaken
- mit Testaccount einloggen und testen, ob der Kunde so viel wie nötig und so wenig wie möglich bearbeiten kann
- Testaccount löschen
- Rolle "Manager" den entsprechenden Kundenaccounts zuweisen
- Kundenaccounts an Kunden übergeben
Arbeitsschritte (Prozess) ohne Plugin
Benutzerrollen Rechte zuweisen oder nehmen
- zuweisen via "add_cap"
- nehmen via "remove_cap"
https://developer.wordpress.org/reference/classes/wp_role/add_cap/
Konkrete Rechte für konkrete Rollen
Redakteuren Zugriff auf Menüs und Design gewähren
- ab Werk nur Administratoren erlaubt auf die Rubrik "Design" zuzugreifen
- Kunden aber lieber nicht als Administrator bevollmächtigen um Plugin- und WordPress-Updates einzuspielen und ggf. die gesamte Website lahm zu legen
- wenn Kunde/in nur Menüs anpassen soll/will bestehende Rolle des Redakteurs erweitern
bei einfachen Websites
Folgende Code-Zeilen gehören in die Datei functions.php des aktuellen Themes:
<?php
add_action( 'init', 'my_role_modification' );
function my_role_modification() {
$role = get_role( 'editor' );
$role->add_cap( 'edit_theme_options' );
}
?>
bei mehrsprachigen Websites
- bei mehrsprachige Websites (mit WPML) um eine Zeile erweitern
- dann stehen dem Redakteur auch alle WPML-Optionen der Menüs zur Verfügung
<?php
add_action( 'init', 'my_role_modification' );
function my_role_modification() {
$role = get_role( 'editor' );
$role->add_cap( 'edit_theme_options' );
$role->add_cap( 'wpml_manage_wp_menus_sync' ); // Zusatz für WPML
}
Quelle: https://pixelbar.be/blog/wordpress-redakteuren-zugriff-auf-menues-und-design-gewaehren/
Redakteuren Zugriff auf Datenschutzseite gewähren
ACHTUNG: Eigentlich sollte es wie folgt funktionieren, aber da besteht im WP-Cor (noch) ein Bug
add_action('init', 'my_role_modification');
function my_role_modification()
{
$role = get_role('editor');
$role->add_cap( 'manage_privacy_options' );
}
Funktionierender Workaround https://wordpress.stackexchange.com/questions/318666/how-to-allow-editor-to-edit-privacy-page-settings-only
add_action('map_meta_cap', 'custom_manage_privacy_options', 1, 4);
function custom_manage_privacy_options($caps, $cap, $user_id, $args)
{
if (!is_user_logged_in()) return $caps;
$user_meta = get_userdata($user_id);
if (array_intersect(['editor', 'administrator'], $user_meta->roles)) {
if ('manage_privacy_options' === $cap) {
$manage_name = is_multisite() ? 'manage_network' : 'manage_options';
$caps = array_diff($caps, [ $manage_name ]);
}
}
return $caps;
}
FAQ
Frage 1
TBD
Troubleshooting
Lösung 1
TBD
Nachfolgende(r) Prozess(e)
TBD via Verlinkung zu anderem(n) HowTo(s)
Recherche
In diesem Bereich werden die ursprünglichen Ziele, Hintergründe, Notwendigkeit und Grundlagen für die obigen Arbeitsschritte beschrieben. In diesem Fall wurde ein Plugin zur detaillierten Verwaltung von Rechten benötigt. Es mussten Rechte aktiviert und deaktiviert werden. Daher war auch die Erstellung individueller Rollen notwendig.
Tests
User Role Editor
- 500.000+ Nutzer
- regelmäßige Updates
- kaum Einstellungsmöglichkeiten in der kostenlosen Variante
Funktionen
- Anlegen eigener Rollen inkl. der Zuordnung von konkreten Rechten zu diesen
- bestehende Rollen kopieren und Rechte anpassen (erweitern / verringern)
- bestehende Rollen analysieren (aktuelle Standard-Rechte anschauen)
- Benutzern mehr als eine einzelne Rolle zuzuweisen.
- ...
Vorteile
- eigene neue Rolle anlegen
- bestehende Rollen bearbeiten
- Pro Version für weitere, spezifischere Anforderungen verfügbar (z. B. einzelne Bereiche im Admin-Menü, Widgets, etc. für bestimmte Rollen blockieren)
Nachteile
- Rechte für einzelne Custom Post Types (CPT), z.B. "Leistungen", können nicht individuell (de-)aktiviert werden
- werden zwar unter "Individuelle Inhaltstypen" alle einzeln aufgeführt, aber jede Anpassung in einem der CPT wirkt sich auf allen anderen aus
- das ist sehr nachteilig
Members
- 100.000+ Nutzer
- regelmäßige Updates
Funktionen
- Benutzern mehr als eine einzelne Rolle zuzuweisen (z.B. Manager & SEO-Manager)
- Anlegen eigener Rollen inkl. der Zuordnung von konkreten Rechten zu diesen
- bestehende Rollen kopieren und Rechte anpassen (erweitern / verringern)
- bestehende Rollen analysieren (aktuelle Standard-Rechte anschauen)
- ...
Vorteile
- eigene neue Rolle anlegen
- bestehende Rollen bearbeiten
- Pro Version für weitere, spezifischere Anforderungen verfügbar
- übersichtlicher als "User Role Editor"
- keine auffälligen Bugs und ungünstige Usability wie bei "User Role Editor"
Nachteile
- Rechte für einzelne Custom Post Types (CPT), z.B. "Leistungen", können nicht individuell (de-)aktiviert werden
Adminimize
- 200.000+ Nutzer
- regelmäßige Updates
- sehr sehr viele spezifische Einstellungs-Möglichkeiten
Funktionen
- alle Menüpunkte (z. B. "Einstellungen") und deren Unterpunkte (z. B. "Schreiben") im Backend für einzelne Rollen deaktivieren
- Rechte auf sehr granularer Ebene deaktivieren
Vorteile
- Plugins/Module in der Werkzeugspalte (Backend links) können für einzelne Rollen mit wenigen Einstellungen aus dem Backend-Bereich ausgeblendet werden
Nachteile
- es können nur Rechte deaktiviert werden, aber nicht hinzugefügt
- das ist z.B. bei Rechten im WordPress-Core-Modul "Design" nachteilig, weil dieses keiner Standardrolle zur Verfügung steht (außer Admin)
- dadurch können Rechte für Design nicht konfiguriert werden
Quellen und interessante Links
Plugins
- https://de.wordpress.org/plugins/members/
- https://de.wordpress.org/plugins/adminimize/
- https://de.wordpress.org/plugins/user-role-editor/
Benutzerrollen
- https://blog.kulturbanause.de/2013/03/die-wordpress-benutzergruppen-benutzerrollen/
- https://www.agentur-kreativdenker.de/wordpress-benutzerrollen/