✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Opas: Muokkaa WordPressin globaalia kyselyä

4

Joissakin tapauksissa saatat joutua muokkaamaan yleistä viestikyselyä, jota WordPress suorittaa millä tahansa vierailemallasi sivulla – sekä järjestelmänvalvojana että käyttöliittymässä. Tässä oppaassa tarkastelemme, mitä koukkua kannattaa käyttää ja kuinka muuttaa kyselyn argumentteja mieleiseksesi.

Mitä koukkua käyttää

Ensin sinun on tiedettävä, mihin koukkuun haluat lisätä koodisi. Tarvitsemme koukun, joka tapahtuu heti sen jälkeen, kun WordPress on asettanut kaikki argumentit, mutta ennen kuin varsinainen kysely suoritetaan. Tätä varten käytämme toimintoa pre_get_posts.

Tässä koukussa saat yhden parametrin; joka on WP_Queryobjekti, jonka kanssa WordPress suorittaa kyselyn myöhemmin. Teet muutoksia objektiin – mutta sinun ei tarvitse palauttaa sitä, koska WordPress suorittaa kyselyn muokatun objektin kanssa.

add_action('pre_get_posts', function($query) { // Add your code here });

Kyselyn muokkaaminen vaatii todennäköisesti joitain ehdollisia tunnisteita määrittämään tapaukset, joita haluat muuttaa. Voit esimerkiksi kohdistaa kyselyyn vain hakutuloksissa tai luokkanäkymissä.

Ehdolliset tunnisteet

WordPressissä on joukko ehdollisia tageja, joiden avulla voit määrittää, missä tapauksissa haluat lisätä koodisi. Ehdollinen tagi on yksinkertaisesti funktio, joka palauttaa tosi tai epätosi sen mukaan, missä tilassa WordPress on. Esimerkkejä yleisistä ehdollisista tunnisteista on is_admin()tarkoitus tarkistaa, olemmeko tällä hetkellä järjestelmänvalvojassa vai käyttöliittymässä, is_singular()olemmeko yhdellä viestillä tai sivulla käyttöliittymässä ja is_search()jos olemme hakutulossivulla.

Muista, että koukkua pre_get_postskäytetään sekä järjestelmänvalvojalle että käyttöliittymälle. Jos haluat vaikuttaa vain yleiseen kyselyyn käyttöliittymässä, sinun on käärittävä koodisi ehdollisen tagin if-tarkistuksen sisään is_admin().

Huomautus ehdollisista tunnisteistapre_get_posts

Ehdolliset tunnisteet ovat loistavia ja kaikki, mutta joitain asioita on pidettävä mielessä, kun käytät näitä sisällä pre_get_posts.

Ensin sinun on tutustuttava tagiin is_main_query(). Toiminto pre_get_postssuoritetaan itse asiassa useita kertoja jokaisella sivulatauksella. Esimerkiksi pre_get_postssuoritetaan luotaessa kutakin valikkoa (mukaan lukien widgetien valikot). Jotta voit muokata varsinaista globaalia kyselyä, esim. luokka-arkiston viestejä tai hakutuloksia, sinun on kohdistettava "pääkyselyyn" käyttämällä is_main_query().

Toiseksi, sinun on oltava tietoinen tapauksista, joissa sinun on tarkistettava ehdolliset tunnisteet tarjotulle objektille sen sijaan, että kutsuisit funktiota "itsenäisesti". Yleensä kun käytät ehdollisia tunnisteita, kirjoitat sen seuraavasti:

if (is_main_query()) { // Do stuff }

Kuitenkin käytettäessä pre_get_posts, objektiin on lisättävä joitain ehdollisia tunnisteita. Esimerkiksi:

Tarkista aina is_main_query()kohdassa annettu esine pre_get_posts. Lue lisää pre_get_posts-dokumentaatiosta.

Tämä on esimerkki tarkistamisesta, jos emme ole järjestelmänvalvojassa ja olemmeko pääviestikyselyssä:

Argumenttien muuttaminen tai lisääminen

Koska työskentelemme WP_Queryobjektin kanssa, voit katsoa WP_Queryn dokumentaatiosta, kuinka voit rakentaa argumentteja viestikyselyn mukauttamiseksi. Muista, että argumentit on jo täytetty. Siinä tapauksessa sinun on liitettävä tai muutettava olemassa olevia arvoja. Tai poista ne, jotka haluat poistaa.

Käytät set()funktiota WP_Queryobjektiin argumenttien asettamiseen. Menetelmä hyväksyy kaksi argumenttia, argumenttiavaimen ja toiseksi arvon. Esimerkiksi posts_per_pageargumentin asettaminen tapahtuisi näin:

Tapauksissa, joissa haluat liittää tai muuttaa olemassa olevan argumentin, teet tämän yleensä tallentamalla ensin olemassa olevan argumentin muuttujaan. Voit käyttää menetelmää get()tähän. Sitten muokkaat muuttujaa lisäämällä tai yhdistämällä taulukoita tai mitä tahansa. Ja lopuksi käytät set()korvaamaan muokatun muuttujan takaisin kyselyobjektiin. Suosittelen käyttämään var_dump()objektia nähdäksesi, mitä se sisältää, ja tämä on myös mukava tapa tarkistaa, ovatko ehdolliset tagit oikein.

Tässä on nopea esimerkki käytöstä get()(tarkistaa vain, onko se tyhjä), ja jos on, lisää omat argumenttisi set().

Huomautus verokyselystä

WordPressissä on erilliset alaluokat taksonomian (WP_Tax_Query) -osan käsittelemiseksi sisällä WP_Query. Jos sinun on tehtävä monimutkaisempia taksonomiakyselyn muutoksia, pre_get_poststoiminto saattaa olla liian aikaista. Jotkut arvot voivat olla tyhjiä, koska ne täytetään myöhemmin. Tässä tapauksessa saatat olla parempi käyttää parse_tax_querytoimintoa pre_get_posts. Lue tämän koukun dokumentaatio nähdäksesi, sopiiko tämä sinulle.

Johtopäätös

Lisäämäsi tai muuttamasi argumentit riippuvat täysin siitä, mitä haluat tehdä, mutta sinulla pitäisi nyt olla jonkinlainen käsitys strategioista, joiden avulla pääset käsiksi maailmanlaajuiseen kyselyyn. Jos haluat saada jonkinlaista käsitystä WP_Queryobjektista ja sen argumenttien käytöstä, postaukseni viestien kyselystä saattaa olla kiinnostava.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja