Welkom bij het derde deel van onze serie genaamd "Mastering WP_Query". In het vorige gedeelte hebben we 13 WordPress-functies doorlopen die gerelateerd zijn aan de WP_Query
klasse. In dit deel zullen we WordPress-hooks (filters en acties) bekijken die u in combinatie met kunt gebruiken WP_Query
.
Dus, zonder verder oponthoud, laten we beginnen!
In de "Filters Referentie" van de Codex staan 16 WordPress-filters vermeld onder de titel "WP_Query Filters". In dit gedeelte gaan we over hen praten. Het zal een vrij snel gedeelte zijn, omdat de meeste filters gaan over verschillende "clausules" van een databasevraag gemaakt door de WP_Query
klasse.
We nemen contact met ze op, direct na het doornemen van de filters die geen verband houden met de clausules.
found_posts
Met dit filter kunt u het aantal gevonden items wijzigen zonder de limiet die hieruit voortvloeit WP_Query
's posts_per_page
argument.
Dit filter is met name handig voor het maken van aangepaste paginering. Laten we eens kijken wat de Codex zegt:
Als u bijvoorbeeld een aangepaste offsetwaarde in uw query's declareert, zal WordPress de offset NIET aftrekken van de parameter $ wp_query-> found_posts (als u bijvoorbeeld 45 bruikbare posts heeft na een offset van 10, zal WordPress de offset en geef found_posts nog steeds een waarde van 55).
Klinkt logisch.
found_posts_query
Het aantal gevonden items wordt berekend met de SELECT FOUND_ROWS ()
commando in MySQL. Met dit filter kunt u deze opdracht wijzigen in iets anders, voor het geval u het aantal gevonden items op een andere manier moet berekenen.
posts_request
Als u de voltooide SQL-query wilt wijzigen, is dit het filter dat u moet gebruiken. Het overschrijft in principe de hele SQL-query die is samengesteld door de WP_Query
klasse.
posts_results
Als u de PHP wilt wijzigen rangschikking
dat WP_Query
genereert met de SQL-query, kunt u dit filter gebruiken. Er is een leuk voorbeeld over op de Codex, zodat u kunt zien hoe het werkt.
(Let op: dit filter verwerkt de rauw array die is gegenereerd met de SQL-query.)
the_posts
anders posts_results
, de the_posts
filter wacht tot de array intern is verwerkt, wat betekent dat de array wordt gecontroleerd op ongepubliceerde en plakkerige berichten. Gebruik deze als u niet ongepubliceerd of berichten in uw array wilt.
SELECT
Clausule) van de zoekopdracht: posts_fields
De SELECT
clausule van een SQL-query bepaalt welke databasevelden worden geselecteerd uit de resulterende databaserijen en met dit filter kunt u het filteren.
BEGRENZING
Clausule van de zoekopdracht: post_limits
De BEGRENZING
clausule van een SQL-query stelt de beperkingen voor de query in en met dit filter kunt u het filteren.
DISTINCT
Clausule van de zoekopdracht: posts_distinct
De DISTINCT
clausule van een SQL-query stelt dat de query alleen verschillende resultaten moet retourneren en dit filter helpt u bij het filteren. Van nature, WP_Query
retourneert geen verschillende resultaten, maar wanneer u dit filter gebruikt met een functie die terugkeert "DISTINCT"
, de vraag zal worden aangepast om alleen verschillende resultaten te retourneren.
WAAR
Clausule van de zoekopdracht: posts_where
De WAAR
clausule van een SQL-query wordt gebruikt om MySQL's te filteren SELECT
, INSERT
, BIJWERKEN
of DELETE
en dit filter helpt u bij het filteren van dit filter. Terwijl de WP_Query
klasse doet al het werk dat nodig is om de resultaten te filteren, je kunt nog een stap verder gaan door dit filter te gebruiken.
WAAR
Clausule van de query Nadat de paging is berekend: posts_where_paged
Dit filter is een iteratie naar de posts_where
filter, die u kunt gebruiken met paging-query's.
WAAR
Clausule van een zoekopdracht: posts_search
Nog een iteratie van de posts_where
filter is dit filter, dat u kunt gebruiken om de WAAR
clausule van een vraag die wordt gebruikt om zoekresultaten in WordPress te krijgen.
JOIN
Clausule van de zoekopdracht: posts_join
De JOIN
clausule van een SQL-query kunt u uw SQL-opdracht werken in meerdere databasetabellen, en dit filter helpt u om het te filteren. Dit is een van de geavanceerde onderdelen van MySQL, dus ik raad het gebruik van dit filter af, tenzij je heel goed weet hoe MySQL werkt JOIN
s werk.
JOIN
Clausule van de query Nadat de paging is berekend: posts_join_paged
Net als posts_where_paged
is een iteratie van posts_where
, dit is een iteratie naar de posts_join
filter dat werkt op pagingquery's.
BESTELLING DOOR
Clausule van de zoekopdracht: posts_orderby
De BESTELLING DOOR
clausule van een SQL-query rangschikt de volgorde van de query en met dit filter kunt u de volgorde filteren.
GROEP DOOR
Clausule van de zoekopdracht: posts_groupby
De GROEP DOOR
clausule van een SQL-query zorgt ervoor dat de "gegroepeerde" resultaten worden geretourneerd door een databaseveld, en dit filter helpt u bij het filteren van de resultaten.
posts_clauses
Als je alle clausules tegelijkertijd wilt behandelen, is daar ook een filter voor: posts_clauses
. Dit filter dekt de WAAR
, GROEP DOOR
, JOIN
, BESTELLING DOOR
, DISTINCT
, SELECT
, en GRENZEN
clausules.
Nu hebben we de filters besproken die betrekking hebben op WP_Query
, laten we verder gaan met de andere soort haken: acties.
pre_get_posts
Voordat de query wordt geparseerd, kunt u deze gebruiken (bijvoorbeeld extra queryvariabelen invoegen) met behulp van deze actie. Laten we een kort voorbeeld van Tom McFarlin bekijken om te leren hoe een categorie uit de hoofdlus kan worden uitgesloten:
set ('category__not_in', $ excluded); * / set_query_var ('category__not_in', $ excluded); add_action ('pre_get_posts', 'tutsplus_exclude_category'); ?>
parse_query
anders pre_get_posts
, die tussenkomt met de vraag voor de queryvariabelen zijn ingesteld, de parse_query
actie verwerkt het proces na de queryvariabelen zijn ingesteld. U moet deze actie dus gebruiken als u de huidige variabelen wilt controleren en actie onderneemt in overeenstemming met deze variabelen.
de post
De voorwaarde de actie
is een beetje verwarrend omdat het de naam is van een actiehaak, een WP_Query
-gerelateerde functie en ook een methode van de WP_Query
klasse.
Deze actie, zoals de Codex zegt, laat ons het post-object direct aanpassen nadat het is ondervraagd en ingesteld. Met deze actie kunt u de uitvoer rechtstreeks wijzigen. Laten we een snel voorbeeld bekijken:
'. __ ('FEATURED', 'tutsplus'). '
Acties en filters zijn altijd een leuk onderwerp om over te praten en te schrijven. (Ik weet zeker dat mijn twee series over WordPress-acties en WordPress-filters leuk waren om te schrijven en een geweldige reactie kregen van onze lezers.) Ik hoop dat je dit deel net zo leuk vond als ik het leuk vond om te schrijven.
Wil je iets toevoegen aan het artikel? Maak een reactie in de comments hieronder. En als je het artikel leuk vond, vergeet dan niet om het met je vrienden te delen!
Tot ziens in het volgende deel, waar we het hebben over de eigenschappen en methoden van de WP_Query
klasse!