Ich bin mir ziemlich sicher, dass ich die in WordPress eingerichteten Rollen und Funktionen verstehe: detaillierte Funktionen, die in Rollen zusammengefasst sind, die Benutzern zugewiesen werden können. Der Code sollte die detaillierten Funktionen überprüfen, nicht die Rollen (da sich die Funktionen für bestimmte Rollen ändern können). Rollen sind nicht unbedingt hierarchisch (obwohl die Standardrollen sind).
Gibt es eine Möglichkeit, Benutzern mehrere Rollen zuzuweisen? Alternativ eine Reihe von Gruppen von Funktionen haben und einem Benutzer eine oder mehrere Gruppen zuordnen? Bei der Funktionsweise meiner Website gibt es eine Reihe offensichtlicher Verantwortlichkeiten: Aktualisieren von Webseiten, Moderieren von Foren, Aktualisieren des Veranstaltungskalenders usw. Jede Verantwortung verfügt über eine Gruppe von Funktionen, die zur Ausführung der damit verbundenen Aufgaben erforderlich sind. Ich möchte einem Benutzer ermöglichen, eine oder mehrere Verantwortlichkeiten auszuführen. Benutzer A könnte also Webseiten und den Veranstaltungskalender aktualisieren, aber die Foren nicht moderieren (nicht annähernd taktvoll genug), aber Benutzer B könnte Foren moderieren, den Veranstaltungskalender aktualisieren, ist jedoch in der Nähe der Webseiten nicht zulässig.
Gibt es eine Möglichkeit, dies zu tun, ohne eine Rolle für jede mögliche Kombination von Verantwortlichkeiten zu definieren?
quelle
Antworten:
Das Fehlen mehrerer Rollen hat mich lange Zeit irritiert, da die zugrunde liegende WP_User-Klasse mehrere Rollen unterstützt. Ich habe sogar überlegt, nach einer alternativen Softwarelösung zu suchen. @lpryor - Nachdem ich Ihren Beitrag gelesen hatte, war ich erneut motiviert, ihn selbst umzusetzen.
Es dauerte eine überraschend kurze Anzahl von Zeilen, obwohl ich die Datei users.php hacken musste, da ich zu faul war, ein separates Plugin zu erstellen, um dies für mich zu tun. Dies ist eindeutig der falsche Weg. Wenn ich in Zukunft genug motiviert bin, kann ich versuchen, es richtig zu machen.
Wenn Sie nicht daran interessiert sind, auf die neueste Version von Wordpress zu aktualisieren (was Sie sollten), können Sie mit den folgenden Codefragmenten mehrere Rollen implementieren. Bitte denken Sie daran, dass ich kein WordPress-Experte bin. Ich habe gerade die relevanten Dateien geöffnet und die Änderungen vorgenommen, ohne zu versuchen, die vollständigen Auswirkungen meiner Aktivitäten zu verstehen. Der Code erscheint mir vernünftig, aber ich würde ihm mein Leben nicht anvertrauen.
(Ich verwende 3.2, damit Ihre Zeilennummern variieren können.) Fügen Sie in class-wp-users-list-table.php kurz vor Zeile 150 einige der folgenden hinzu:
Ändern Sie dann die Funktion current_account so, dass sie ungefähr so aussieht
}}
Jetzt in users.php Kommentieren Sie die Zeilen 71-76 aus
Ersetzen Sie die set_role in Zeile 83 durch add_role
Fügen Sie in Zeile 92 Folgendes hinzu (Dies ist nur ein leicht bearbeitetes Kopieren und Einfügen aus der Heraufstufungsaktion - ich habe nicht überprüft, ob die Funktion "remove_user" zum Entfernen von Rollen geeignet ist).
Fügen Sie in Zeile 370 Folgendes hinzu
quelle
Das Plugin für den Benutzerrollen- Editor verwaltet mehrere Rollen für einen Benutzer.
Nach der Installation ist Benutzer> unter jedem Benutzer die Option Funktionen. URE behandelt die erste WP-Rolle als "primäre Rolle" und ermöglicht das Hinzufügen von "anderen Rollen".
quelle
Ich verwende das Mitglieder-Plugin zusammen mit benutzerdefinierten Funktionen.
Sie können einer Person nicht mehrere Rollen zuweisen, aber Sie können beliebige Rollen erstellen und angeben, über welche Funktionen diese Rolle verfügt.
In den Tempaltes können Sie so etwas wie current_user_can () verwenden .
quelle