Dies ist eine vierteilige Tutorial-Serie, die sich mit den Benutzern, Rollen und Funktionen von WordPress beschäftigt. Die Serie behandelt die Architektur und das Design von Benutzerrollen in WordPress. die wichtigsten Funktionen für die Interaktion mit Benutzern und das Verwalten von Rollen und Fähigkeiten hervorheben; und im letzten Tutorial werden wir ein Beispiel aus der Praxis erstellen, das die Nützlichkeit dieser API demonstriert.
In diesem ersten Teil werden wir die Grundlagen und inneren Abläufe des WordPress-Benutzer-, Rollen- und Funktionssystems erläutern. In diesem Teil werden keine Funktionen oder Codes behandelt. Sie können also zum nächsten springen, wenn Sie nur daran interessiert sind, Code zu schreiben, der mit diesem System interagiert. Ich würde jedoch dringend empfehlen, dass Sie dies zuerst durchgehen, um eine grundlegende Vorstellung von Benutzern und Rollen in WordPress zu erhalten.
Nach der Version 2.0 hat WordPress ein neues Rollen- und Funktionssystem eingeführt, das das ältere Benutzerebenensystem ersetzt. Das ältere System wird nicht besprochen; Es ist jetzt vollständig (seit Version 3.0) veraltet und sollte nicht mehr verwendet werden.
Das neue System ist fortgeschrittener und flexibler. Es ist jetzt möglich, benutzerdefinierte Berechtigungen zu erstellen und diese pro Benutzer zuzuweisen. Mit diesem Update wurden die Mängel des alten Modells behoben und Entwickler konnten leistungsfähigere und individuellere Plugins und Designs erstellen.
WordPress speichert die Daten der Benutzer in zwei Tabellen: wp_users
und wp_usermeta
(Ich gehe während dieser ganzen Serie davon aus, dass Ihr WordPress-Setup den Standard verwendet wp_
Präfix). Die zweite Tabelle wurde erstellt, um die erste zu erweitern, und Entwickler können jedem Benutzer zusätzliche Daten hinzufügen.
Wenn es nur eine Tabelle gab, können Sie entweder nicht mehr Daten an Benutzer anhängen oder müssen alle diese Daten in einer Spaltenzeile serialisiert lassen, was hinsichtlich Leistung und Skalierbarkeit nicht ganz gut ist. (Stellen Sie sich vor, Sie hätten 50 Plugins, bei denen jedes zwei oder drei weitere Felder pro Benutzer hinzufügt.)
Unten sehen Sie ein Diagramm des Schemas der beiden Tabellen. Die Tabellen sind mit einer Eins-zu-Viele-Beziehung verknüpft. Tatsächlich können Sie beliebig viele Zeilen in der Zeile haben wp_usermeta
mit dem gleichen Benutzeridentifikation
(Dies ist der Fremdschlüssel für diese Beziehung und repräsentiert die ID-Spalte in.) wp_users
)
Wenn wir uns das Schema dieser beiden Tabellen ansehen, können wir daraus schließen wp_users
wird verwendet, um eine begrenzte und begrenzte Datenmenge über jeden Benutzer zu speichern. Einige von ihnen sind erforderlich und werden hauptsächlich vom WordPress-Kern, Designs oder Plugins wie Login, Kennwort, E-Mail-Adresse und Namen (auch Spitzname) verwendet. Dies ist jedoch nicht der Fall user_url
Feld zum Beispiel. Dieses Feld könnte in das Feld passen wp_usermeta
Tabelle, da es nicht erforderlich ist.
Einige erforderliche Felder werden in gespeichert wp_usermeta
wie der Spitzname. Nun, eigentlich bin ich mir nur dieser bewusst. Einige wichtige Informationen wie Benutzerfunktionen, Benutzerebene und SSL-Modus werden jedoch im gespeichert wp_usermeta
Tisch auch. Das macht es nicht weniger wichtig als das wp_users
Tabelle (insbesondere wenn Berechtigungen und Sicherheit ein großes Problem sind).
Dennoch sollten Sie beim Umgang mit beiden Tabellen vorsichtig sein. Ich würde empfehlen, dass Sie bei den WordPress-Funktionen bleiben, um mit dem Benutzer- und Funktionssystem zu interagieren.
Wie jedes andere CMS verfügt WordPress über ein Benutzererlaubnissystem, mit dem die Berechtigungen für jeden Benutzer festgelegt und eingeschränkt werden können. In diesem Abschnitt werde ich das Konzept der Rollen und Fähigkeiten in WordPress erläutern. Wenn Sie also mit der Codex-Erklärung zu kämpfen haben, hoffe ich, dass dies klarer wird, wenn ich das Konzept anders angehe.
Vergiss die Rollen. Nehmen wir für einige Minuten an, dass sie nicht existieren.
Stellen wir uns folgendes Szenario vor: Sie haben ein WordPress-Blog, das Sie kürzlich eingerichtet haben, und Sie sind der Administrator. (Sie haben also alle Möglichkeiten zur Verfügung.) Sie haben sich entschieden, einen neuen Benutzer zu Ihrem Blog hinzuzufügen, um einige Blogbeiträge beizutragen. Sie dachten auch, es wäre fair, ihm zu erlauben, seinen Anzeigenamen zu kommentieren und anzupassen.
Unten sehen Sie ein Bild unseres Benutzers mit den Fähigkeiten, die Sie ihm zugewiesen haben.
So einfach ist das. Sie weisen Benutzern Funktionen zu. Sie können diese Funktionen frei benennen. Zum Beispiel können Sie "write_new_post" als Slug für das Schreiben eines neuen Posts benennen.
In Ihrem Blog haben Sie eine Liste mit Funktionen, von denen jede einzelne eine besondere und eingeschränkte Berechtigung für die Benutzer hat, die über diese verfügen. Jeder Benutzer kann über eine begrenzte Anzahl von Funktionen verfügen. Ein Benutzer, der über alle Funktionen verfügt, ist ein Administrator, da er so ziemlich alles kann. Stellen Sie sich dies als ein Berechtigungssystem vor, und Funktionen sind Berechtigungen, die Sie den Benutzern erteilen.
Aber warum sind Fähigkeiten wichtig? Nun, Sie sind dafür verantwortlich. Wenn Sie beispielsweise ein eigenes Plugin (oder ein eigenes Thema) erstellen, erstellen Sie möglicherweise ein eigenes "access_control_panel
msgstr "" und ordnen Sie es einer Anzahl von Benutzern zu.
Wenn ein Benutzer Ihre "Systemsteuerung" anfordert, sollten Sie prüfen, ob der Benutzeraccess_control_panel
", bevor die Seite" Systemsteuerung "angezeigt wird. Sie können auch nach der Funktion suchen, bevor Sie einen bestimmten Codeblock ausführen, um sicherzustellen, dass der Benutzer über die erforderlichen Berechtigungen verfügt.
WordPress verfügt über eine Standardanzahl von Funktionen, die für das Funktionieren erforderlich sind. Sie können diese Funktionen auch nutzen, aber entfernen Sie sie nicht. Sie können sicherlich Ihre eigenen und benutzerdefinierten Fähigkeiten erstellen.
Jetzt wissen wir, was Fähigkeiten sind. Stellen wir uns ein anderes Szenario vor, in dem Sie eine Reihe von Benutzern haben. Sie möchten diese Benutzer in zwei Gruppen aufteilen: leistungsstarke Benutzer und weniger leistungsfähige Benutzer. Jede Benutzergruppe verfügt über spezielle Funktionen.
Dazu müssen Sie diese Funktionen jedem Benutzer zuweisen, was ein wenig frustrierend und unproduktiv sein kann. Rollen werden genau dafür gemacht, sie werden nach Benutzern gruppiert.
Anstatt den Benutzern Funktionen zuzuweisen, weisen Sie sie Rollen zu. und dann weisen Sie den Benutzern die Rollen zu. Es ist jedoch möglich, den Benutzern Funktionen direkt zuzuweisen. Eine Rolle kann für einen oder mehrere Benutzer erstellt werden. und ein Benutzer kann keine, eine oder viele Rollen haben.
Die Realität ist also viel mehr so.
Beachten Sie hierbei, dass Sie vor dem Ausführen von Code, der eine Berechtigung erfordert, nach einer Benutzerfunktion und nicht nach einer Benutzerrolle suchen sollten. Gehen Sie niemals davon aus, dass eine Rolle über eine bestimmte Funktion verfügt, da dies durch ein anderes Plugin oder ein anderes Design geändert werden kann.
Es gibt Aktionen, die mehrere Funktionen erfordern. Um beispielsweise einen Blogbeitrag zu bearbeiten, benötigen Sie die 'Beitrag bearbeiten
Fähigkeit. Was aber, wenn dieser Blogeintrag von einem anderen Benutzer erstellt wurde? Sie brauchen dann die 'edit_other_posts
'Fähigkeit auch. Sie müssen also nach beiden suchen, bevor der Benutzer den Beitrag bearbeiten darf.
Hier kommen Meta-Fähigkeiten ins Spiel. WordPress hat eine map_meta_cap ()
Funktion, die ein Array der erforderlichen Fähigkeiten zurückgibt, um eine bestimmte Funktion auszuführen.
Kommen wir also zum vorherigen Beispiel zurück. Nehmen wir an, wir haben einen Benutzer mit der ID 3 und wir möchten prüfen, ob dieser Benutzer einen Blogbeitrag mit der ID 5 bearbeiten kann. Dieser Blogbeitrag wird von einem anderen Benutzer mit der ID 6 veröffentlicht.
In diesem Fall, die map_meta_cap ()
Funktion gibt ein Array mit den folgenden Fähigkeiten zurück: Beitrag bearbeiten
, edit_published_posts
, und edit_other_posts
. Um dieses Array zu erstellen, drücken Sie die map_meta_cap ()
Die Funktion muss einige Überprüfungen basierend auf dem Benutzer und dem Beitrag durchführen.
Die Standardfunktionen, nach denen die Funktion prüft, sind 'Benutzer löschen
','Benutzer bearbeiten
','remove_user
','promoter_user
','Beitrag löschen
','delete_page
','Beitrag bearbeiten
','Seite bearbeiten
','read_post
', oder 'Seite lesen
'. Es ist jedoch möglich, mit Ihren eigenen zu erweitern, indem Sie diemap_meta_cap
'filtern.
Kurz gesagt, das war das WordPress-Benutzer- und Berechtigungssystem. Ich habe versucht, es so einfach und minimalistisch wie möglich zu halten. und aus diesem Grund habe ich es vermieden, Code hinzuzufügen. Im nächsten Teil werden wir eine Reihe von Funktionen untersuchen, die WordPress für die Interaktion mit diesem System bietet.