Felipe Elia tips For WordPress

WordPress Er ET CMS og derfor innhold manipulasjon er en av de viktigste pilarene i verktøyet. I dette innlegget vil du forstå prosessen som BRUKES AV WP for å hente hva som må vises, og også hvordan det er mulig å endre denne prosessen.

formålet med denne teksten er på ingen måte en erstatning for offisiell dokumentasjon, som alltid bør konsulteres. Målet ditt er å sette på ett sted hva nybegynnere bør vite før de begynner å søke etter mer informasjon.

hva Er En WordPress-spørring?

Spørring på engelsk betyr spørring og er vanligvis begrepet som brukes til å referere til en setning I SQL (Structured Query Language). I WordPress kaller vi spørringer for innhold som er gjort gjennom wp_query-klassen.

hva Er WP_Query?

WP_Query er PHP-klassen bak alle søk etter innhold I WordPress. Den aksepterer flere parametere i sin konstruksjon, inkludert innleggstyper, metadata, taksonomier og datoer, samt gjør det mulig å lage egendefinerte parametere.

wp_query-klassen utløses på alle forespørsler til nettstedet ditt, med unntak av kanskje svært sjeldne unntak for Plugin-kontrollerte adresser som forstyrrer normal flyt. Hver gang vi kaller en side, et innlegg, en taksonomi sikt og etc. WordPress tolker den forespurte adressen gjennom rewrite API og skaper En WP_Query basert på de tolkede argumentene.

Betingede Koder og WP_Query

lage dine egne looper: WP_Query og get_posts ()

når vi refererer til sløyfen I WordPress, snakker vi om iterasjon (uten n) av de valgte innleggene. Vanligvis har vi bare en sløyfe, som alltid ligner koden nedenfor:

hvis det er innlegg, iterere over dem. Den første setningen i while er the_post(), som forteller WordPress å sette variablene i neste innlegg av sløyfen inn i den globale variabelen $post, via setup_postdata() – metoden i wp_query-klassen.

dette er utseendet til hovedløkken , det vil si iterasjonen av settet av innlegg Som WordPress fant ved dekoding av forespørselen og søker etter det tilsvarende innholdet. Hvis vi trenger et annet sett med innlegg (relatert innhold, innhold i en bestemt kategori utenfor filen eller innlegg publisert etter det som vises, for eksempel), kan vi gjøre dette på to måter: opprette et nytt wp_query-objekt eller ringe get_posts () – funksjonen. De gjør begge det samme, men de kommer tilbake til deg forskjellige ting.

opprette en sløyfe Med WP_Query

et enkelt eksempel på hvordan du lager en sløyfe Med WP_Query:

legg merke til hvordan testen og iterasjonen på have_posts() forblir der, akkurat som the_post(), men denne gangen som metoder for variabelen vi opprettet.

funksjonen wp_reset_postdata () tjener til å gjenopprette den globale variabelen $post til sin tilstand før spørringen, det vil si at den vil sette tilbake i global $post posten til global $wp_query, som vi vil se senere.

opprette en sløyfe med get_posts()

samme eksempel ved hjelp av funksjon get_posts():

funksjonen get_the_title () godtar som parameter et innlegg som er forskjellig fra det som er i den globale variabelen $post. Hvis du trenger å bruke funksjonen_content (), må du for eksempel endre den globale, som følger:

forskjell Mellom WP_Query og get_posts()

den grunnleggende forskjellen er hva du vil ha tilgang til. Ved Å bruke WP_Query har du for eksempel tilgang til antall innlegg som finnes totalt ($query->found_posts) og antall mulige sider ($query->max_num_pages). Funksjonen get_posts() bringer derimot noen allerede fylte argumenter i tillegg til at De som standard er litt raskere: den passerer parameteren no_found_rows som sann, og forhindrer at den endelige spørringen har alternativet SQL_CALC_FOUND_ROWS, og med dette unngår MySQL fra å passere den totale mengden rader som er funnet.

global WordPress wp_query og WordPress Wp_the_query

I denne prosessen med å tolke forespørselen og generere wp_query klasse objekt WordPress skaper to globale variabler: $wp_query, som du sikkert har sett et sted, og $wp_the_query, som alltid vil være den originale kopien av det som ble forespurt av brukeren. Hvis noen knuser med $wp_query, kan vi i det minste få det tilbake til sin normale tilstand med $wp_the_query. Dette er akkurat hva wp_reset_query () – funksjonen gjør.

hvorfor skal ikke query_posts() brukes i temafiler?

dette er standardflyten for en forespørsel til en adresse på nettstedet ditt utenfor dashbordet:

du bør ikke bruke query_posts () fordi den har blitt kalt før. Ved å ringe det igjen, vil Du duplisere behandlingen (spør WordPress for å gjøre et annet spørsmål) og i tillegg potensielt ignorere hva noen plugins allerede har brukt.

personsøking er et annet eksempel på hvordan bruk av query_posts() kan forstyrre arbeidet ditt. Hvis du vil vise 15 innlegg per side i en bestemt kategori og prøve å overskrive standard wp-beløp gjennom query_posts(), vil du ha en situasjon der det første elementet på den andre siden skal være den 16., men faktisk er det bare den 11 ..

hvordan endre hovedspørringen? Bruk pre_get_posts

bruk av query_posts() har vært uheldig i noen tid. Siden da har mange forklart hvorfor og oppfordret utviklere til å bruke handlingen pre_get_posts, med spesiell vekt På Leo Bahiano, som kjærlig kallenavnet handlingen preguetinho (bruk av ordspill med preguetinho Do Leo Bahiano er autorisert i kommentarene).

bruken er enkel. For å eliminere personsøking i søk, for eksempel, kan du bruke følgende kode i temaets functions.php :

koden tilordner sin funksjon til hook pre_get_posts, så funksjonen blir utført hver gang en spørring behandles. Innenfor det må vi sørge for at vi bare skal jobbe med de nødvendige spørringene, så vi tester om vi virkelig er i «front» – delen av nettstedet (på denne måten forstyrrer vi ikke noe fra panelet), hvis vi er i hovedspørsmålet på siden, det vil si hvis spørringen er $wp_the_query og hvis alt dette er sant, endrer vi attributtet posts_per_page til -1, noe som betyr ingen grense for innlegg.

et annet eksempel: slett en kategori fra listen over blogginnlegg

hvis du trenger mange endringer, kan du bli med dem alle i en enkelt funksjon:

konklusjon



+