Mastering WP_Query Handlinger og Filtre

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!

WP_Query-relaterte filtre

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.

Filtrering av antall funnet innlegg for spørringen: 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.

Filtrering av spørringen for å kjøre for å hente de funnet innleggene: 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.

Filtrering av hele SQL-spørringen: 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.

Filtrering av Array-spørringen returnerer: 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 array som genereres fra SQL-spørringen.)

Filtrer arrayen av hentede innlegg: 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.

Filtrering av feltlisten (og Å 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.

Filtrering av 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.

Filtrering av 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.

Filtrering av 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.

Filtrering av 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.

Filtrering av 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.

Filtrering av 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 MEDs arbeid.

Filtrering av 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.

Filtrering av 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.

Filtrering av 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.

Filtrering av alle klausuler i spørringen: 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.

WP_Query-relaterte handlinger

Nå har vi vurdert filtrene relatert til WP_Query, la oss gå videre til den andre slags kroker: handlinger.

Forstyrre spørringen før den kjører: 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'); ?>

Behandle analysering av spørringen: 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.

Endre postobjektet: 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'). '
'; add_action ('the_post', 'tutsplus_featured_badge'); ?>

Slutten av del tre

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!