Velkommen til tredje del av serien vår, kalt "Mastering WP_Query". I forrige del gikk vi gjennom 13 WordPress-funksjoner som er relatert til WP_Query
klasse. I denne delen vurderer vi WordPress-kroker (filtre og handlinger) som du kan bruke sammen med WP_Query
.
Så, uten videre, la oss begynne!
I "Filters referanse" til Codex er det 16 WordPress-filtre oppført under tittelen "WP_Query Filters". I denne delen skal vi snakke om dem. Det vil være en ganske rask del fordi de fleste filtre handler om forskjellige "klausuler" i en databasespørsmål laget av WP_Query
klasse.
Vi kommer tilbake til dem, rett etter at de har gått gjennom filtre som ikke er relatert til klausulene.
found_posts
Dette filteret lar deg endre antall funnet elementer uten grensen som kommer fra WP_Query
's posts_per_page
argument.
Dette filteret er spesielt nyttig for å lage tilpasset paginering. La oss se hva Codex sier:
For eksempel, hvis du erklærer en tilpasset offsetverdi i dine søk, vil WordPress IKKE trekke avregningen fra parameteren $ wp_query-> found_posts (for eksempel hvis du har 45 brukbare innlegg etter en kompensasjon på 10, vil WordPress ignorere offset og gir fortsatt found_posts en verdi på 55).
Gir mening.
found_posts_query
Antall funnet elementer beregnes med VELG FOUND_ROWS ()
kommando i MySQL. Dette filteret lar deg endre denne kommandoen til noe annet, hvis du må beregne antall funnet elementer på en annen måte.
posts_request
Hvis du vil endre det ferdige SQL-spørsmålet, er dette filteret du bør bruke. Det overstyrer i utgangspunktet hele SQL-spørringen som er sammensatt av WP_Query
klasse.
posts_results
Hvis du vil endre PHP matrise
at WP_Query
genererer med SQL-spørringen, kan du bruke dette filteret. Det er et pent eksempel på Codex, slik at du kan se hvordan det fungerer.
(Vær oppmerksom på at dette filteret håndterer rå array som genereres fra SQL-spørringen.)
the_posts
I motsetning til posts_results
, de the_posts
Filter venter på at arrayet skal behandles internt, noe som betyr at arrayet vil bli sjekket mot upubliserte og klissete innlegg. Bruk denne hvis du ikke vil være upublisert eller innlegg i ditt utvalg.
Å VELGE
Klausul) av spørringen: posts_fields
De Å VELGE
klausul av en SQL-spørring bestemmer hvilke databasefelter som skal velges fra de resulterende databaserammerne, og dette filteret hjelper deg å filtrere det.
GRENSE
Klausul for spørringen: post_limits
De GRENSE
klausul i en SQL-spørring angir begrensningene for spørringen, og dette filteret hjelper deg å filtrere det.
TYDELIG
Klausul for spørringen: posts_distinct
De TYDELIG
Klausulen i en SQL-spørring sier at spørringen bare skal returnere forskjellige resultater, og dette filteret hjelper deg å filtrere det. Naturlig, WP_Query
returnerer ikke forskjellige resultater, men når du bruker dette filteret med en funksjon som returnerer "TYDELIG"
, Spørringen blir justert for å returnere bare forskjellige resultater.
HVOR
Klausul for spørringen: posts_where
De HVOR
Klausul for en SQL-spørring brukes til å filtrere MySQL Å VELGE
, SETT INN
, OPPDATER
eller SLETT
uttalelser, og dette filteret hjelper deg å filtrere dette filteret. Mens WP_Query
klasse trenger alt arbeidet for å filtrere resultatene, kan du ta det et skritt videre ved å bruke dette filteret.
HVOR
Klausul for spørringen etter at personsøkingen er beregnet: posts_where_paged
Dette filteret er en iterasjon til posts_where
filter, som du kan bruke med personsøkingsforespørsler.
HVOR
Klausul for et søkespørsmål: posts_search
En annen iterasjon til posts_where
filter er dette filteret, som du kan bruke til å endre HVOR
klausul for et spørsmål som brukes til å få søkeresultater i WordPress.
BLI MED
Klausul for spørringen: posts_join
De BLI MED
klausul i en SQL-spørring lar deg arbeide med SQL-kommandoen i flere databasetabeller, og dette filteret hjelper deg å filtrere det. Dette er en av de avanserte delene av MySQL, så jeg anbefaler ikke å bruke dette filteret med mindre du vet veldig godt hvordan MySQL BLI MED
s arbeid.
BLI MED
Klausul for spørringen etter at personsøkingen er beregnet: posts_join_paged
Akkurat som posts_where_paged
er en iterasjon av posts_where
, dette er en iterasjon til posts_join
filter som fungerer på personsøkingsspørsmål.
REKKEFØLGE ETTER
Klausul for spørringen: posts_orderby
De REKKEFØLGE ETTER
klausul av en SQL-spørring ordner bestilling av spørringen, og dette filteret hjelper deg å filtrere bestillingen.
GRUPPE AV
Klausul for spørringen: posts_groupby
De GRUPPE AV
klausul av en SQL-spørring gir spørringen tilbake "gruppert" resultater av et databasefelt, og dette filteret hjelper deg å filtrere hvordan du grupperer resultatene.
posts_clauses
Hvis du vil håndtere alle klausuler samtidig, er det et filter for det også: posts_clauses
. Dette filteret dekker HVOR
, GRUPPE AV
, BLI MED
, REKKEFØLGE ETTER
, TYDELIG
, Å VELGE
, og GRENSER
klausuler.
Nå har vi vurdert filtrene relatert til WP_Query
, la oss gå videre til den andre slags kroker: handlinger.
pre_get_posts
Før spørringen blir analysert, kan du samhandle med den (for eksempel injisere flere spørringsvariabler) ved å bruke denne handlingen. La oss se et raskt eksempel fra Tom McFarlin for å lære å ekskludere en kategori fra hovedløkken:
sett ('category__not_in', $ ekskludert); * / set_query_var ('category__not_in', $ ekskludert); add_action ('pre_get_posts', 'tutsplus_exclude_category'); ?>
parse_query
I motsetning til pre_get_posts
, som intervenerer med spørringen før Spørringsvariablene er satt, den parse_query
handling håndterer prosessen etter Spørringsvariablene er satt. Dermed bør du bruke denne handlingen hvis du vil kontrollere de nåværende variablene og handle i samsvar med dem.
posten
Begrepet handlingen
er litt forvirrende fordi det er navnet på en action hook, a WP_Query
-relatert funksjon og også en metode for WP_Query
klasse.
Denne handlingen, som Codex sier, lar oss endre postobjektet umiddelbart etter å ha blitt forespurt og satt opp. Ved hjelp av denne handlingen kan du endre utgangen direkte. La oss se et raskt eksempel:
'. __ ('FEATURED', 'tutsplus'). '
Handlinger og filtre er alltid et morsomt tema for å snakke og skrive om. (Jeg vet for et faktum at mine to serier om WordPress-handlinger og WordPress-filtre var morsomme å skrive og fikk en god reaksjon fra leserbasen.) Jeg håper du likte denne delen så mye som jeg likte å skrive det.
Vil du legge til noe i artikkelen? Skyt en kommentar i kommentarfeltet nedenfor. Og hvis du likte artikkelen, ikke glem å dele den med vennene dine!
Se deg i neste del, hvor vi snakker om egenskapene og metodene til WP_Query
klasse!