Verwendung von WordPress für die Entwicklung von Webanwendungen WP_User_Query

In dieser Serie haben wir uns angesehen, wie WordPress zur Entwicklung von Webanwendungen verwendet werden kann, ähnlich einer Reihe verschiedener Frameworks und anderer verfügbarer Tools.

Wir haben im letzten Artikel angefangen, uns die verschiedenen Optionen anzusehen, die sich auf die Abfrage der WordPress-Daten beziehen. Zuerst haben wir überprüft WP_Query.

In diesem Artikel werden die verfügbaren Optionen zum Abrufen von Informationen aus der Datenbank anhand von Informationen beschrieben WP_User_Query Danach konzentrieren wir uns darauf, wie wir direkte SQL-Abfragen für die Datenbank ausführen können.

Im Moment wollen wir jedoch einen Blick darauf werfen, was WordPress uns bei der Verwaltung unserer Benutzer, ihrer Informationen und der damit verbundenen Metadaten bietet.

Abfragen der Datenbank: Ein Refresher

Bevor wir uns mit der eigentlichen API beschäftigen, sollten wir uns kurz mit einigen Informationen über die WordPress-Datenbank befassen, sodass wir eine einheitliche Informationsebene festgelegt haben, von der aus wir für den Rest des Artikels arbeiten können, die API und die Beispiele, die wir verwenden. Ich werde abdecken.

Im letzten Artikel haben wir drei spezifische Punkte erwähnt:

  1. Beim Abfragen der WordPress-Datenbank handelt es sich um das Abrufen von Informationen aus der Datenbank (wie bei den übrigen datenbankgestützten Webanwendungen)..
  2. Es gibt verschiedene Möglichkeiten, die Datenbank abzufragen - einige davon sind in manchen Situationen korrekter als andere -, und wir müssen verstehen, welche Möglichkeiten sich für die beste Situation eignen.
  3. Es ist wichtig, die APIs zu verstehen, damit wir wissen, was uns zur Verfügung steht, welchen Nutzen sie bieten und welche Situationen für eine bestimmte API am besten geeignet sind.

Wenn wir gedeckt haben WP_Query, Wir haben überprüft, wie Sie Beiträge, Seiten, benutzerdefinierte Beitragstypen, verwandte Taxonomien, Kategorien, Begriffe usw. abrufen können.

Einführung in WP_User_Query

Ähnlich, WP_User_Query bietet viel der gleichen Funktionalität, jedoch im Kontext der Benutzer. Der Codex definiert die Abfrage:

WP_User_Query ist eine Klasse,…, die das Abfragen der WordPress-Datenbanktabellen 'wp_users' und 'wp_usermeta' ermöglicht..

Im Gegensatz zur ursprünglichen Definition von WP_Query, Dies ist weniger technisch und relativ leicht zu verstehen insbesondere wenn Sie mit dem vertraut sind wp_users Tisch und die wp_usermetadata Tische.

Wenn nicht, keine große Sache: Wir werden alles abdecken, was nicht nur zum Verständnis der Tabellen, sondern auch zum Verständnis der API erforderlich ist.

So verwenden Sie WP_User_Query

Das wp_users Tisch und die wp_usermetadata Tabellen sind für das Speichern von Benutzerdaten verantwortlich.

Das Tabellenschema

Die Informationen zu den einzelnen Tabellen finden Sie im Codex (den Sie hier und hier finden können). Ich empfehle jedem, es zu überprüfen. Die Informationen zu jeder Tabelle können jedoch wie folgt vereinfacht werden:

  • Das Benutzer Tabelle enthält die Liste der Benutzer im System und die Mindestmenge an Informationen, um einem Benutzer Zugriff auf WordPress zu gewähren. Dazu gehören die automatisch zugewiesene ID, ihr Login, das Passwort, die Anzeige ihres Namens, ihre E-Mail-Adresse, ihre Registrierung, ihr Status und die URL ihrer Website (falls angegeben)..
  • Das usermeta Tabelle dient zum Speichern allgemeinerer Informationen durch einfache Schlüssel / Wert-Paare. Das heißt, genau wie bei Post-Daten können wir Informationen mithilfe von IDs, Metaschlüsseln und Meta-Werten Benutzern zuordnen.

Um dies in Aktion zu sehen, können Sie einen Blick auf alle Informationen zu WordPress-Datenbanktabellen werfen, und Sie werden feststellen, dass sich hier Informationen wie die befinden Vorname, Nachname, Fähigkeiten, und so weiter.

Das Schöne ist, wenn Sie eine Anwendung erstellen, bietet die Metatabelle eine große Flexibilität hinsichtlich der Menge an Informationen, die Sie wirklich mit Ihren Benutzern verknüpfen können.

Verwendung von WP_User_Query

Beachten Sie zunächst, dass das Einrichten einer Benutzerabfrage dem Einrichten von a ähnelt WP_Query. Damit meine ich, dass Sie sich eine Instanz der Klasse holen, indem Sie ein Array von Argumenten an den Konstruktor übergeben.

Was nun die Argumente angeht, kann alles, was in den zugehörigen Datenbanktabellen enthalten ist, angegeben werden. Zum Beispiel können Sie suchen mit:

  • die Benutzerrolle,
  • String-Übereinstimmungen für Spalten (wie ID, Login, URL usw.),
  • E-Mail-Addresse,
  • und so weiter.

Aber es gibt noch mehr als das. Sie können auch Parameter angeben, die sich auf Metadaten beziehen, sodass Sie verschiedene Benutzer beispielsweise nach ihrer Rolle und einer Sammlung von Meta-Informationen für Benutzer abfragen können.

Wir werden uns dies ein wenig ausführlicher ansehen, aber es ist auch erwähnenswert, dass Sie noch umfassendere Abfragen erstellen können, die sich auf das Einschließen von Teilen von Benutzermetadaten, Ausschließen von Metadaten von Benutzern, wie und wie beziehen möchten Daten (z. B. nach aufsteigendem Benutzernamen) und sogar Paginierungsparameter, sodass wir Benutzerdatensätze problemlos durchblättern können.

Ein praktisches Beispiel

Was nützt es natürlich, über eine API zu sprechen, ohne sich die Verwendung der API anzusehen? Im folgenden Beispiel nehmen wir ein Beispiel für Benutzerkonten und iterieren dann die Abfrage, bis wir eines erstellt haben, mit dem versucht wird, eine Vielzahl der von ihr bereitgestellten Funktionen zu demonstrieren.

Nehmen wir an, wir wollen folgendes erreichen:

  • alle Administratoren abrufen,
  • die einen Vornamen angegeben haben,
  • geordnet nach ihrem Registrierungsdatum in aufsteigender Reihenfolge,
  • und paginieren, sodass wir nur eine Anzahl von Benutzern pro Seite abrufen

Also lasst uns anfangen. Denken Sie daran, dass wir diese Abfrage Zeile für Zeile erstellen werden. Sie sollte daher relativ leicht zu verstehen sein, da sie sich ständig weiterentwickelt.

Wenn Sie zu irgendeinem Zeitpunkt Fragen haben, was los ist, können Sie sie gerne in den Kommentaren ablegen.

Zunächst möchten wir angeben, dass wir alle Administratoren einschließen möchten:

 $ args = array ('role' => 'Administrator'); $ user_query = new WP_User_Query ($ args);

Danach möchten wir sicherstellen, dass sie ihren Vornamen und ihren letzten Namen haben. Da diese Informationen in der Metadatentabelle gespeichert sind, müssen wir Benutzerparameter für die Metaabfrage festlegen.

Wir möchten Sie insbesondere dazu auffordern, alle Administratoren abzurufen, die über einen Vornamen verfügen (oder, der nicht leer ist)..

 $ args = array ('role' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')); $ user_query = new WP_User_Query ($ args);

Als nächstes ordnen wir die Ergebnisse nach dem Registrierungsdatum der Administratoren in aufsteigender Reihenfolge an:

 $ args = array ('role' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')' orderby '=> 'registered', 'order' => 'ASC'); $ user_query = new WP_User_Query ($ args);

Zum Schluss wollen wir sagen, dass wir fünf Platten gleichzeitig zurückziehen wollen:

 // Die Anzahl der Datensätze, die auf einer Seite angezeigt werden sollen $ display_count = 5; // Wir müssen die Nummer der aktuellen Seite ermitteln, auf der wir uns befinden. // Dies ist nützlich, um den korrekten Versatz zu berechnen. $ Page = get_query_var ('paged')? get_query_var ('paged'): 1; // Berechne danach den Offset $ offset = ($ page - 1) * $ display_count; $ args = array ('role' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')' orderby '=> 'registered', 'order' => 'ASC', 'number' => $ display_count 'offset' => $ offset); $ user_query = new WP_User_Query ($ args);

Und wir sind fertig. Jetzt müssen Sie die Abfrage durchlaufen, um unsere Ergebnisse auszugeben. Leider haben wir alle eine andere Ansicht, wie wir das machen wollen. Beachten Sie, dass die von mir gezeigte Schleife nur ein Beispiel ist (versus das Beispiel):

 // Wenn es Ergebnisse gibt, die auf unseren Kriterien basieren… $ results = "; if (! Empty ($ user_query-> results))) // Lassen Sie uns für jedes Ergebnis den Namen des Administrators foreach ($ user_query-> results as anzeigen) anzeigen $ user) $ results. = 'Der Anzeigename lautet:'. $ user-> display_name; $ results. = '
'; $ results. = get_user_meta ($ user-> ID, 'first_name', true); $ results. = '
'; // Zeigt die Informationen auf dem Bildschirm an. Echo $ Ergebnisse;

Und beachten Sie: Ein Unterschied zu WP_User_Query gegen WP_Query Das heißt, es ist nicht notwendig, irgendwelche Postdaten zurückzusetzen, da wir mit nichts anderem als einer in sich geschlossenen Schleife arbeiten.

Wann wird WP_User_Query verwendet?

An diesem Punkt entsteht natürlich die Suche von wann ist eine gute Idee zu verwenden WP_User_Query, und Sie erhalten wahrscheinlich unterschiedliche Antworten von verschiedenen Personen, da einige in der Vorschau andere Methoden zum Abrufen ihrer Informationen verwenden.

Aber im Allgemeinen, wenn ich Informationen aus der Datenbank abrufen möchte, die behandelt direkt und streng mit benutzern dann benutze ich WP_User_Query.

Nun, da die Ergebnismenge auf eine Art und Weise zurückgegeben werden kann, die technisch zusammengeführt oder zumindest mit einer anderen Datenmenge überarbeitet werden kann, ist dies definitiv möglich. Ich persönlich denke jedoch, dass dies ein bisschen Erfahrung erfordert, die möglicherweise nicht für jeden geeignet ist.

Mit anderen Worten, Sie können es nach Belieben verwenden, aber vorsichtig behandeln.

Nächste, direkte Abfragen gegen die Datenbank

Also mit WP_Query und WP_User_Query Hinter uns haben wir eine weitere API, mit der wir unsere Diskussion abrunden können, und das ist die Möglichkeit, die WordPress-Datenbank direkt abzufragen.

Im letzten Artikel, der sich mit Abfragen befasst, werden wir uns diese API ansehen, unsere Diskussion beenden und dann den letzten Überblick über alles, was wir in dieser Serie behandelt haben, durchgehen.