Mastering WP_Meta_Query & WP_Date_Query

Welkom bij het laatste deel van de serie - nou, technisch gezien zal het laatste deel "Series Finale" zijn, maar je snapt het. In dit deel leer je over twee genoemde zusters van zussen WP_Meta_Query en WP_Date_Query.

Zonder verder oponthoud, laten we beginnen!

Werken met alle soorten metadata via de WP_Meta_Query-klasse

De WP_Meta_Query les is een "hulpklasse", helpt WP_Query om zoekopdrachten met metadata te maken.

Zoals je weet, slaat WordPress drie soorten metadata op in de database: post-meta, gebruikersmeta en meta-meta. We hebben in de vorige zelfstudies gezien dat we meta-query's kunnen uitvoeren in de query's die we maken met de WP_Query, WP_User_Query en WP_Comment_Query klassen (met de 'Meta_query' parameter). De WP_Meta_Query wordt daadwerkelijk uitgevoerd wanneer u deze query's uitvoert.

Blijkbaar kunt u de SQL's voor deze meta-gerelateerde query's verkrijgen met behulp van de WP_Meta_Query klasse. Deze klasse krijgt niet echt de resultaten van de opgegeven query, maar bereidt in plaats daarvan de SQL-opdrachten voor die u ergens anders kunt gebruiken.

Voorbeeld Gebruik van de klasse WP_Meta_Query

We kunnen niet zeggen dat het een tutorial is als we geen voorbeeld doen, toch? Met een eenvoudig voorbeeld gaan we kijken hoe we het kunnen gebruiken WP_Meta_Query klasse in het echte leven. (Toegegeven, het is een zeer specifiek iets om de SQL-code voor een meta-gerelateerde query te krijgen, maar ik zal proberen een real-world voorbeeld te bedenken.)

Laten we ons voorstellen dat u een speciale "gerelateerde berichten-plug-in" wilt maken voor uw eigen website, waar u berichten zult vermelden die dezelfde metawaarde hebben voor een metasleutel-of een andere metawaarde voor een andere metasleutel. En in plaats van het maken van een meta-query binnen een WP_Query U wilt bijvoorbeeld de SQL-code van de query gebruiken om deze dynamisch in afzonderlijke codeblokken te gebruiken. Hier zijn de stappen om die SQL-code voor te bereiden:

 'OF', array ('meta_key' => 'Some_Key', 'meta_value' => 'Some_Value', 'compare' => '='), array ('meta_key' => 'Some_Other_Key', 'meta_value' => 'Some_Other_Value', 'compare' => '=')); $ my_meta_query = nieuwe WP_Meta_Query; $ my_meta_query-> parse_query_vars ($ my_meta_query_args); $ my_meta_query_sql = $ my_meta_query-> get_sql ('post', $ wpdb-> posts, 'ID'); ?>

Daar ga je: de $ my_meta_sql variabele slaat de SQL-code op voor uw speciale query en u kunt deze SQL-code gebruiken waar u maar wilt in uw project.

Wrangling Date Queries With the WP_Date_Query Class

Net als WP_Meta_Query, de WP_Date_Query is een helperklasse voor de WP_Query, WP_User_Query en WP_Comment_Query klassen. Deze helperklasse is geïntroduceerd in WordPress versie 3.7. De klas ondersteunde toen niet WP_User_Query, maar sinds de 4.1-versie kunt u een query uitvoeren in de tabel met gebruikers (de user_registered kolom specifiek).

Gelijkwaardig aan WP_Meta_Query en het vermogen om meta-sleutels en waarden te bevragen, de WP_Date_Query Met klasse kunnen we datumvelden in de posts, opmerkingen en gebruikerstabellen opvragen. En precies zoals WP_Meta_Query, Met deze helper-klasse kunt u ook de voorbereide SQL-code retourneren om een ​​datumgerelateerde query uit te voeren.

Voorbeeld Gebruik van de klasse WP_Date_Query

Om volledig te begrijpen hoe het WP_Date_Query klassenwerken, laten we er een voorbeeld mee doornemen. Het wordt nog een onnodig specifiek voorbeeld, maar het zou niet goed voelen om dit onderdeel zonder een voorbeeld te laten.

Laten we ons voorstellen dat we om de een of andere reden moeten zoeken naar opmerkingen die in de huidige maand en voor de middag zijn gemaakt. (alsjeblieft beschrijf me een opmerking als je een goed voorbeeld vindt voor het ophalen van opmerkingen in de huidige maand en vóór de middag!) Hier is hoe je de SQL-code voor deze bizarre zoekopdracht kunt vinden:

 date ('n'),), array ('before' => 'noon'), 'relation' => 'AND'); $ my_date_query = nieuwe WP_Date_Query ($ my_date_query_args, 'comment_date'); $ my_date_query_sql = $ my_date_query-> get_sql (); ?>

Daar ga je. Houd er rekening mee dat u PHP-relatieve datumnotaties kunt gebruiken, die erg handig zijn.

Snelle tip: Christian Bruckner heeft een geweldige post op MarketPress.com over hoe WP_Date_Query werken. Het is een beetje verouderd (omdat het geschreven was voordat WordPress 4.1 werd uitgebracht) maar het is zeer goed geschreven en nog steeds goed gelezen. Zorg ervoor dat je het bekijkt.

Alles inpakken

Met deze twee helperklassen beëindigen we de lange reis van het ontleden van de WP_Query klasse. Dit was een van de langste oefenreeksen uit de geschiedenis van Tuts +, dus bedankt dat je tot het einde bij ons blijft! In het volgende (en laatste) deel gaan we herhalen wat we voor de laatste keer hebben meegemaakt en sluiten we de serie af.

Heb je iets toe te voegen aan dit artikel? Als dat zo is, aarzel dan niet om uw gedachten te delen in het gedeelte Opmerkingen hieronder. En als je het artikel leuk vond, vergeet dan niet om het met je vrienden te delen!