WordPress für die Entwicklung von Webanwendungen Benutzerverwaltung

In dieser ganzen Serie haben wir uns angesehen, wie WordPress als Grundlage für die Entwicklung von Webanwendungen dienen kann.

Die Sache ist, bis jetzt haben wir uns die Features von WordPress nicht wirklich angesehen, die wirklich dazu beitragen zu Erstellen von Webanwendungen. Stattdessen haben wir uns mit der Frage beschäftigt, wie WordPress als Grundlage und nicht als Framework dient. Außerdem haben wir uns mit der Organisation von WordPress im Vergleich zu vielen der verfügbaren modernen Frameworks beschäftigt.

Im Besonderen haben wir uns das ereignisgesteuerte Designmuster im Gegensatz zum beliebten Model-View-Controller-Designmuster (und dessen Varianten) angesehen und wie dieses im Kontext von WordPress aussieht.

Daher haben wir daran gearbeitet, die Anwendungsarchitektur und ihre Struktur im Kontext von WordPress zu überdenken, um uns dabei zu helfen, ein besseres konzeptionelles Modell dafür zu finden, wie die Dinge in WordPress zusammenpassen, und wie das Hook-System genutzt werden kann, also Aktionen und Filter - und wie sie sich auf verschiedene Punkte während des Lebenszyklus der WordPress-Seite auswirken.

Obwohl dies ein wenig mehr Diskussion verdient, müssen wir uns die Möglichkeiten von WordPress ansehen, um die Funktionen und APIs zu verstehen, mit denen wir arbeiten müssen, bevor wir einen Blick darauf werfen Wie mit ihnen arbeiten.

In den nächsten Artikeln werden wir genau das tun.


Webanwendungskomponenten

Wenn Sie an die Komponenten einer Webanwendung denken, fallen Ihnen wahrscheinlich einige Dinge ein. Das heißt, dass neben der üblichen Architektur der Datenbank, der Middleware und der Präsentationsschicht auch die folgenden Funktionen vorhanden sind:

  • Benutzerverwaltung
  • Berechtigungen
  • Sitzungsmanagement
  • E-Mail-Funktionalität
  • Datenserialisierung und -abruf
  • URL-Routing (manchmal auch als URL-Umschreib- oder Umschreiberegeln oder auch nur als Route bezeichnet)
  • Caching
  • Unterstützung für benutzerdefinierte Abfragen

Obwohl diese Liste keinesfalls umfassend ist, werden die wichtigsten Elemente der Erstellung einer Standard-Webanwendung hervorgehoben (natürlich, wenn Punkte fehlen, die Sie übersehen, zögern Sie nicht, sie in den Kommentaren zu erwähnen.).

Und nein - das ist nicht vorgeschrieben. Manchmal verfügen Webanwendungen nicht über eine Benutzerverwaltung, manchmal über keine Rollen, möglicherweise müssen Sie keine Zwischenspeicherung durchführen und so weiter.

Aber es geht nicht darum, sich dafür einzusetzen alles die Dinge, die du brauchst Stattdessen geht es darum, für die verfügbaren Dinge einen Fall zu machen sollte du brauchst sie.

Schauen wir uns also an, was WordPress in Bezug auf Benutzerverwaltung, Berechtigungen, E-Mail-Funktionalität und Sitzungsverwaltung bietet.


Benutzerverwaltung und Berechtigungen

Jeder, der WordPress verwendet hat - auch wenn es nur zum Bloggen oder zum einfachen Content-Management ist - ist mit dem grundlegenden Benutzersystem vertraut. Das heißt, Sie erstellen einen Benutzernamen und ein Kennwort und füllen dann Ihr Profil so oft Sie möchten.

Darüber hinaus sind erfahrenere Entwickler mit den Vorstellungen von Rollen und Fähigkeiten vertraut. Ich wage sogar zu sagen, dass diejenigen, die WordPress verwenden, mit dem System vertraut sind, auch wenn sie sich nie wirklich mit dem Codex befasst haben oder sich mit dem Schreiben von benutzerbasiertem Code beschäftigt haben.

Die allgemeine Idee ist jedoch ganz einfach: Benutzer repräsentieren ein individuelles Profil für ein Konto in WordPress. Ihre Rolle wird durch das angezeigt, was ihnen bei der Kontoerstellung zugewiesen wurde.

Diese Rollen umfassen:

  • Teilnehmer
  • Mitwirkender
  • Autor
  • Editor
  • Administrator

Wieder sind die meisten von uns, die mit WordPress gearbeitet haben, mit diesen Rollen vertraut, richtig? Aber wie passen die Fähigkeiten ins Bild??

Einfach ausgedrückt, Funktionen geben den Benutzern bestimmte Berechtigungen in der gesamten WordPress-Anwendung sowie das, was sie in bestimmten Bereichen der Anwendung einschränkt. Dies ist im Kodex relativ gut dokumentiert.


Einen neuen Benutzer mit einer Rolle hinzufügen

Aber hier ist die Sache: Wenn Sie eine Anwendung in WordPress erstellen, können Sie mithilfe der verfügbaren APIs Benutzer von benutzerdefinierten Bereichen ausschließen, die Sie basierend auf ihren Rollen und Funktionen erstellt haben.

Programmgesteuert einen Benutzer erstellen

Nehmen wir zunächst an, Sie möchten während der Arbeit an Ihrer Webanwendung in der Lage sein, dem Benutzer die Möglichkeit zu geben, sich über ein benutzerdefiniertes Anmeldeformular zu registrieren oder sich anzumelden (im Gegensatz zur Standardmethode zum Erstellen des Benutzerkontos in.) das Backend wie oben gezeigt).

Dazu können Sie eine Vorlage mit einem Formular erstellen und die Nachbearbeitungsdaten lesen.

Es kann tatsächlich so einfach sein wie das Erfassen der E-Mail-Adresse des Benutzers. Ich erwähne das, weil, obwohl Benutzernamen nett sind und Spaß machen, E-Mails in der Regel für eine Person spezifisch sind, was die Fehlerprüfung vereinfacht.

Die Schritte dazu wären also:

  • Erfassen Sie die E-Mail-Adresse des Benutzers
  • Prüfen Sie, ob ein Benutzer mit dieser E-Mail existiert
  • Wenn nicht, erstellen Sie den Benutzer
  • Ansonsten erstellen Sie den Benutzer nicht und generieren Sie eine Fehlermeldung

Relativ einfach, richtig? Dies bedeutet natürlich, dass Sie beim Erstellen eines Kontos ein Kennwort für den Benutzer erstellen können. Zum Glück gibt es dafür eine API.

Hier ein Beispiel, wie ein Benutzer programmgesteuert auf der Grundlage einer angegebenen E-Mail-Adresse erstellt wird (während automatisch ein Kennwort generiert wird)..

if (null == username_exists ($ email_address)) $ password = wp_generate_password (12, false); $ user_id = wp_create_user ($ email_address, $ password, $ email_address); wp_update_user (array ('ID' => $ user_id, 'nickname' => $ email_address););  else // Der Benutzername ist bereits vorhanden, behandeln Sie das also entsprechend…

Danach müssen Sie tatsächlich eine neue Instanz von erstellen WP_User.

$ user = neuer WP_User ($ user_id);

Dies ermöglicht es uns, Rollen für den jeweiligen Benutzer festzulegen.

Festlegen der Rolle und Fähigkeit eines Benutzers

Schließlich ist es Zeit zu bestimmen, welche Rolle und welche Funktionen Sie dem Benutzer zuweisen.

Einerseits können Sie diese Werte basierend auf den von WordPress angebotenen Optionen hart codieren. Die Wahrheit ist, Sie können sogar benutzerdefinierte Rollen und Funktionen erstellen. Im Moment liegt das nicht im Rahmen des Artikels. Wir können es jedoch in einer zukünftigen Serie besuchen.

Nehmen wir also an, wir möchten, dass alle Benutzer, die derzeit angemeldet sind, das erhalten Teilnehmer Rolle. In diesem Codex-Artikel können Sie sehen, welche Funktionen sie erhalten.

Das Festlegen einer Rolle ist trivial:

$ user-> set_role ('contributor');

Zu diesem Zeitpunkt haben Sie erfolgreich einen neuen Benutzer in der WordPress-Anwendung programmgesteuert erstellt, ohne die Standardverwaltungsfunktionen verwenden zu müssen.

Verbinden Sie dies einfach mit Ihrer eigenen Vorlage, validieren, bereinigen Sie und überprüfen Sie die eingehenden Daten $ _POST Daten, und Sie sind bereit zu gehen.

Der vollständige Code sieht folgendermaßen aus:

if (null == username_exists ($ email_address)) // Erzeuge das Passwort und erstelle den Benutzer $ password = wp_generate_password (12, false); $ user_id = wp_create_user ($ email_address, $ password, $ email_address); // Setze den Spitznamen wp_update_user (array ('ID' => $ user_id, 'nickname' => $ email_address);); // Setze die Rolle $ user = new WP_User ($ user_id); $ user-> set_role ('contributor');  else // Der Benutzer ist bereits vorhanden // end if / else

Nicht schlecht, richtig?

Überprüfen der Rolle und Fähigkeit eines Benutzers

Aber das Erstellen eines Benutzers und das Speichern seiner Informationen in der Datenbank in nur der Hälfte davon, richtig?

Sobald sich der Benutzer angemeldet und authentifiziert hat, möchten Sie wahrscheinlich den Inhalt auf seine Rolle beschränken. Dies wirft die Frage auf: Wenn ein Benutzer angemeldet ist, wie können wir die Rolle eines Benutzers abrufen??

Glücklicherweise macht die WordPress-API dies relativ einfach:

  • Zunächst müssen wir die aktuelle Benutzer-ID abrufen können
  • Danach können wir die Rolle des Benutzers übernehmen und von dort aus mit der bedingten Logik fortfahren

Wir müssen die Vorteile nutzen wp_get_current_user () Funktion, und dann müssen wir eine Instanz der WP_User Objekt mit der aktuellen Benutzer-ID, woraufhin wir die Fähigkeiten des Benutzers betrachten können.

Sehen Sie sich den Code unten an:

// Hole eine Instanz des aktuellen Benutzers $ user_id = wp_get_current_user () -> ID; $ user = neuer WP_User ($ user_id);

Nicht schlecht, richtig?

Dies macht es sehr einfach, bedingten Code zu schreiben, wie zum Beispiel:

// Dadurch werden die Benutzerfunktionen gedruckt. Print_r ($ user-> wp_capabilities); // Mit welcher wiederum können Sie eine Überprüfung wie folgt durchführen: if ('1' === $ user-> wp_capabilities ['subscriber']) // Wir haben einen Abonnenten

Dort ist eine alternative Möglichkeit, dies zu tun:

global $ current_user; get_currentuserinfo (); if (0 === $ current_user-> user_level) // Wir haben einen Abonnenten

Dies wirft jedoch die Frage auf, woher dieser Nullpunkt kam. Schau dir das genau an.

Die Unterschiede zwischen den beiden Ansätzen hängen davon ab, wie objektorientiert Ihr Code sein soll.

Ich neige dazu, weniger Fan zu sein global wenn ein objektorientierter Ansatz verfügbar ist (wie im ersten Beispiel); Das zweite Beispiel bietet jedoch auch eine relativ einfache Lösung. Deine Entscheidung.

Sobald Sie die Rolle eines Benutzerkontos bedingt überprüfen können, können Sie sie auf bestimmte Bereiche der Anwendung beschränken.


Aber der Benutzer braucht E-Mails!

Sie haben Recht: Zumindest müssen Benutzer E-Mails erhalten, wenn ihre Konten erstellt wurden, und sie müssen in der Lage sein, E-Mails zu erhalten, wenn sich etwas über ihr Konto geändert hat.

Wieder bietet WordPress eine API, die dies sehr einfach macht. Sie kann jedoch über einfache Aktionen hinaus erweitert werden, z. B. wenn die Profilinformationen eines Benutzers geändert werden.

Angesichts der Tatsache, dass WordPress über ein reichhaltiges Ereignissystem verfügt, können Sie sich möglicherweise in beliebig viele Ereignisse einklinken und E-Mails senden, wenn etwas das passiert. Das ist offensichtlich übertrieben, aber es zeigt, wie mächtig die API wirklich ist.

Im nächsten Abschnitt werfen wir einen Blick auf die E-Mail-API von WordPress und darauf, wie mit ihr Nachrichten zu bestimmten Aktivitäten gesendet werden können und wie sie mit anderen Funktionen in der Anwendung verknüpft werden kann.