WordPress gebruiken voor Web Application Development WP_User_Query

In deze serie hebben we bekeken hoe WordPress kan worden gebruikt om webtoepassingen te ontwikkelen, net zoals een aantal verschillende frameworks en andere beschikbare tools..

Vanaf het laatste artikel zijn we gaan kijken naar de verschillende opties die we hebben als het gaat om het bevragen van de WordPress-gegevens. Eerst hebben we beoordeeld WP_Query.

In dit artikel gaan we verder met het zoeken naar de beschikbare opties voor het ophalen van informatie uit de database WP_User_Query waarna we onze aandacht richten op hoe we directe SQL-query's kunnen uitvoeren tegen de database.

Maar laten we voor nu eens kijken naar wat WordPress ons biedt op het gebied van het beheren van onze gebruikers, hun informatie en de bijbehorende metadata..

Querying The Database: A Refresher

Voordat we de feitelijke API gaan bespreken, laten we snel een deel van de informatie over de WordPress-database bekijken, zodat we een gemeenschappelijk niveau van informatie hebben ingesteld om vanaf te werken voor de rest van het artikel, de API en de voorbeelden die we hebben ' Ik zal bedekken.

In het laatste artikel noemden we drie specifieke punten:

  1. Het opvragen van de WordPress-database verwijst naar het ophalen van informatie uit de database (zoals het geval is met de rest van webgebaseerde webtoepassingen).
  2. Er zijn een aantal manieren om de database te doorzoeken - sommige zijn in bepaalde situaties correcter dan andere - en we moeten begrijpen welke manieren zich lenen voor de beste situatie.
  3. Het is belangrijk om de API's te begrijpen, zodat we weten wat ons beschikbaar is, welk voordeel elk biedt en welke situaties het meest geschikt zijn voor een bepaalde API..

Toen we bedekt WP_Query, we hebben bekeken hoe het kan worden gebruikt om berichten, pagina's, aangepaste berichttypen, gerelateerde taxonomieën, categorieën, termen enzovoort op te halen.

Introductie van WP_User_Query

evenzo, WP_User_Query biedt veel van dezelfde functionaliteit, maar binnen de context van gebruikers. De Codex definieert de vraag:

WP_User_Query is een klasse, ..., waarmee WordPress-databasetabellen 'wp_users' en 'wp_usermeta' kunnen worden opgevraagd.

In tegenstelling tot de eerste definitie van WP_Query, dit is minder technisch en relatief eenvoudig te begrijpen vooral als u bekend bent met de wp_users tafel en de wp_usermetadata tafels.

Maar als je dat niet bent, geen grote deal: we gaan alles bespreken wat nodig is, niet alleen om de tabellen te begrijpen, maar ook om de API te begrijpen.

Hoe WP_User_Query te gebruiken

De wp_users tafel en de wp_usermetadata tabellen zijn verantwoordelijk voor het opslaan van gebruikersgegevens.

Het tabelschema

De informatie voor elk van de tabellen is beschikbaar in de Codex (die u hier en hier kunt vinden) en ik raad iedereen aan deze te herzien; de informatie over elke tabel kan echter als volgt worden vereenvoudigd:

  • De gebruikers tabel onderhoudt de lijst met gebruikers in het systeem en de minimale hoeveelheid informatie om een ​​gebruiker toegang te geven tot WordPress. Dit omvat de automatisch toegewezen ID, hun login, wachtwoord, hoe hun naam te tonen, hun e-mailadres, wanneer ze geregistreerd zijn, hun status en de URL naar hun site (indien opgegeven).
  • De usermeta tabel wordt gebruikt om meer algemene informatie op te slaan via eenvoudige sleutel / waardeparen. Dat wil zeggen dat we, net als bij postgegevens, informatie kunnen koppelen aan gebruikers met behulp van hun ID's, meta-sleutels en metawaarden.

Als u dit in actie wilt zien, kunt u een kijkje nemen in elke WordPress-databasetabelinformatie en u zult merken dat dit is waar informatie zoals de Voornaam, Achternaam, Mogelijkheden, enzovoorts.

Het leuke is dat als je een applicatie aan het bouwen bent, de meta-tabel veel flexibiliteit biedt over hoeveel informatie je echt kunt associëren met een van je gebruikers..

WP_User_Query gebruiken

Merk allereerst op dat het instellen van een gebruikersvraag ongeveer hetzelfde is als het instellen van een WP_Query. Daarmee bedoel ik dat je een instantie van de klasse pakt door een reeks argumenten door te geven aan de constructor.

Wat de argumenten betreft, kan alles wat zich in de bijbehorende databasetabellen bevindt worden gespecificeerd. U kunt bijvoorbeeld zoeken met behulp van:

  • de gebruikersrol,
  • reeksovereenkomsten op kolommen (zoals de ID, de login, de URL, enzovoort),
  • e-mailadres,
  • enzovoorts.

Maar er is meer aan de hand dan dat. U kunt ook parameters met betrekking tot metadata specificeren, zodat u naar verschillende gebruikers kunt zoeken, bijvoorbeeld op basis van hun rol en een verzameling gebruikers-meta-informatie..

We zullen dit even een beetje gedetailleerder bekijken, maar het is ook de moeite waard om op te merken dat je nog meer geavanceerde vragen kunt opstellen die betrekking hebben op het opnemen van stukken metadata van gebruikers, met uitzondering van gebruikers-metadata, hoe en hoe je de gegevens (bijvoorbeeld door oplopende gebruikersnaam) en zelfs paginatieparameters zodat we gemakkelijk door gebruikersrecords kunnen bladeren.

Een praktisch voorbeeld

Natuurlijk, wat heb je eraan om over een API te praten zonder echt te kijken hoe je hem moet gebruiken? In het volgende voorbeeld nemen we een voorbeeld van gebruikersaccounts en vervolgens herhalen we de query totdat we er een hebben gemaakt die probeert een aantal functies te demonstreren die deze biedt.

Laten we met dat gezegd hebben, laten we zeggen dat we het volgende willen bereiken:

  • alle beheerders ophalen,
  • met een opgegeven voornaam,
  • geordend op basis van hun registratiedatum in stijgende volgorde,
  • en pagineren, zodat we slechts een aantal gebruikers per pagina ophalen

Dus laten we beginnen. Vergeet niet dat we deze vraag regel voor regel zullen opbouwen, dus het moet relatief eenvoudig te begrijpen zijn naarmate het verder evolueert.

Als je op enig moment vragen hebt over wat er gaande is, voel je dan vrij om ze in de comments te laten vallen.

Eerst willen we specificeren dat we alle beheerders willen opnemen:

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

Daarna willen we zeker weten dat ze hun voornaam en het laatst opgegeven hebben. Omdat die informatie wordt opgeslagen in de metatatabel, moeten we gebruikersparameters gebruiken voor de meta-query.

In het bijzonder gaan we vragen om alle beheerders op te halen die een voornaam hebben die is opgegeven (of, liever gezegd, die is niet leeg).

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

Vervolgens gaan we de resultaten op basis van de registratiedatum van de beheerders in stijgende volgorde bestellen:

 $ 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);

En tot slot zullen we zeggen dat we vijf records tegelijk willen terughalen:

 // Het aantal records dat moet worden weergegeven op een pagina $ display_count = 5; // We moeten het nummer van de huidige pagina bekijken waarop we ons bevinden. // Dit is handig voor het berekenen van de juiste offset $ page = get_query_var ('paged')? get_query_var ('paged'): 1; // Bereken hierna de 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);

En we zijn klaar. Nu is het een kwestie van itereren door de query om onze resultaten te kunnen weergeven. Helaas hebben we allemaal een andere kijk op hoe we dit willen doen, dus houd er rekening mee dat de lus die ik laat zien slechts één voorbeeld is (versus de voorbeeld):

 // Als er resultaten zijn op basis van onze criteria ... $ results = "; if (! Empty ($ user_query-> results)) // Laat voor elk resultaat de beheerdersnaam vooreach ($ user_query-> resultaten weergeven als $ user) $ results. = 'De weergavenaam is:'. $ user-> display_name; $ results. = '
'; $ results. = get_user_meta ($ user-> ID, 'first_name', true); $ results. = '
'; // Geef de informatie op het scherm weer. echo $ resultaten;

En let op: een verschil met WP_User_Query versus WP_Query is dat het niet nodig is om elke soort postgegevens opnieuw in te stellen, omdat we niet met iets anders werken dan een op zichzelf staande lus.

Wanneer gebruik ik WP_User_Query

Op dit punt komt de zoektocht natuurlijk voort van wanneer is een goed idee om te gebruiken WP_User_Query, en je krijgt waarschijnlijk verschillende antwoorden van verschillende mensen, als een voorbeeld om andere methoden te gebruiken om hun informatie op te halen.

Maar over het algemeen gesproken, als ik informatie ga ophalen uit de database die handelt direct en strikt met gebruikers, dan gebruik ik WP_User_Query.

Nu de resultaatset op een manier kan worden teruggestuurd die technisch kan worden samengevoegd, of op zijn minst herwerkt met een andere set gegevens, is het zeker mogelijk om dit te doen; Ik denk echter persoonlijk dat dit een beetje ervaring vereist die misschien niet voor iedereen geschikt is.

Met andere woorden, voel je vrij om het te gebruiken zoals je wilt, maar behandel het voorzichtig.

Next Up, directe query's tegen de database

Dus met WP_Query en WP_User_Query achter ons hebben we nog een API waarmee we kunnen kijken om onze discussie af te ronden, en dat is de mogelijkheid om rechtstreeks naar de WordPress-database te vragen.

In het laatste artikel dat vragen behandelt, zullen we deze API bekijken, onze bespreking afronden en dan de laatste beoordeling bekijken van alles wat we in deze serie hebben behandeld..