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.
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:
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.
Ä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.
Das wp_users
Tisch und die wp_usermetadata
Tabellen sind für das Speichern von Benutzerdaten verantwortlich.
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:
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.
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:
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.
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:
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.
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.
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.