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

WordPress-teeman opetusohjelma aloittelijoille – Osa 12: Mukautettu viestikysely

12

Tällä viimeisellä oppitunnilla opimme kirjoittamaan oman kyselysi viesteistä ja kiertämään niitä keskeyttämättä mallin yläsilmukkaa. Teemme yksittäisille viesteille malliosan, jossa näkyvät samaan kategoriaan liittyvät viestit.

Tällä oppitunnilla teemme aiheeseen liittyvän viestikyselyn yksittäisessä viestinäkymässämme, joka näyttää enintään 3 viestiä, viestityyppistä viestiä, samassa kategoriassa tai samassa kategoriassa kuin viesti, jossa olemme. Sulje pois itse nykyinen viesti, ja satunnaisesti näytetyt viestit. Tutkimme myös strategioita, joilla sisäkkäistä silmukkaa ei sotketa.

Aiheeseen liittyvien viestien malli

Tehdään aiheeseen liittyvistä viesteistä malliosa, josta opimme osassa 10. Näin emme monimutkaise liikaa single.phpja tee koodistamme uudelleenkäytettävyyttä. Aseta tämän uuden malliosan pyyntö minne haluat. Laitan sen juuri ennen kommenttimallin pyytämistä:

Tehdään nyt uusi tyhjä tiedosto teemakansioomme ja nimetään se related-posts.php. Tämän tiedoston avulla olemme valmiita sukeltamaan mukautetun viestikyselyn luomiseen.

Mukautettu viestikysely

Jos haluat tehdä mukautetun kyselyn viesteistä, sinulla on joitain vaihtoehtoja, mutta suosittelen tottumaan luokkaan WP_Query. Merkitse tämä dokumentaatiosivu kirjanmerkkeihin, koska tulet käyttämään sitä usein, koska vaihtoehtoja on niin monia. Näytän sinulle käytännön esimerkin kyselyn määrittämisestä viittaamalla kunkin lisättävän spesifikaation dokumentaatioon.

Jos haluat oppia lisää viestien tekemisestä, minulla on viesti, joka käsittelee perusteellisesti juuri sitä.

Mukautetun viestikyselyn tekemiseksi kutsumme, välitämme new WP_Query()sille joukon argumentteja ja tallennamme sen tuloksen muuttujaan. Ja sitten käytämme täsmälleen samaa silmukkaa kuin olemme käyttäneet aiemmin malleissamme (kurkista alkuperäistä silmukkaa tästä vertaillaksesi). Mutta meidän on kerrottava silmukalle, että se käy läpi muuttujan globaalin (joka on yksittäinen viesti) sijaan.

Silmukka näyttää tältä, kun se lisätään mukautettuun kyselyyn:

Kuten näet, silmukka on täsmälleen sama, käyttämällä have_postsja the_post. Erona on, että kutsumme niitä $related_postsesineeseen. Jos ohitamme $related_postsosan, WordPress olettaa sen automaattisesti olevan viestien globaali kysely.

Saatat myös huomata funktiokutsun wp_reset_postdata()heti silmukan jälkeen. Näin "siivoamme jälkemme" mukautetun kyselyn jälkeen WP_Query. Muista, että se the_post()asettaa globaalin post-objektin, jotta voimme käyttää the_title()jne. Ja koska olemme jo silmukan sisällä (jossa on single.php), meidän on varmistettava, että puhdistamme ja nollaamme viestin takaisin yksittäiseksi viestiksi, kun olemme valmiita. Jos emme nollaa jälkitietoja, kaikki tämän jälkeen viittaavat viimeisimpään aiheeseen liittyvään viestiin, jonka kävimme läpi. Tämä voi olla suuri ongelma! Esimerkissämme on kommenttimalli, joka seuraa tätä. Jos nollaus jätetään pois, kommenttimalli näyttää kommentit silmukan viimeisestä aiheeseen liittyvästä viestistä. Eikä ainoatakaan viestiä, jota tarkastelemme!

Toteutamme mukautetun silmukamme

Selvä, aloitetaan mukautetun silmukan käyttöönotto related-posts.php. Lisäsin kääreen ja otsikon, mutta tavalliseen tapaan voit muokata HTML:ää haluamallasi tavalla:

Nyt näemme uudelleenkäytettävyyden voiman mallin osissa. Oletetaan, että tämän mukautetun silmukan sisällä haluamme näyttää täsmälleen saman sisällön kuin content-loop.php, jota käytämme arkistomalleissamme. Meidän tarvitsee vain pyytää tämä malliosa mukautetussa silmukassamme, olemmeko valmiita käsittelemään jokaisen viestin tulosteen!

Nyt jäljellä on vain argumenttien lisääminen viestikyselyymme varmistaen, että haemme haluamamme. Käydään argumentit yksitellen läpi.

Muokatun viestikyselymme argumenttien rakentaminen

Haluamme hakea enintään 3 viestiä. Dokumentaatiossa (osio "Sivutusparametrit") argumentti tälle on posts_per_page. Joten lisäämme array-elementin:

Haluamme varmistaa, että WordPress hakee viestit, ei sivuja tai jotain muuta. Kohdasta "Viestityyppiparametrit" löydämme:

Haluamme estää sen, että yksittäinen viesti, jossa olemme, ei näy aiheeseen liittyvien viestien kyselyssämme, koska siinä ei ole mitään järkeä, eikö niin? Dokumentaatiossa kerrotaan "Viesti- ja sivuparametrit" -kohdassa, että voimme lisätä viestitunnuksen taulukkoon post__not_in:

Haluamme myös satunnaistaa viestit; koska oletuksena se hakee viimeisimmät julkaistut viestit, ja siitä voi nopeasti tulla melko toistuvaa, kun käyt viestejä läpi. Onneksi WordPressillä on tähän toiminto, miten se järjestää viestit; "Tilaa ja järjestele parametrien mukaan" löydämme:

Lopuksi haluamme kysyä viesteistä, jotka kuuluvat samoihin luokkiin kuin viesti, jossa olemme. Tätä varten meidän on ensin, ennen kyselyargumentteja, saatava luokat yhteen viestiin, jossa olemme. Kohdassa "Luokkaparametrit" näemme, että voimme tarjota joukon luokkatunnuksia category__in. Onneksi WordPressissä on toiminto luokkatunnusten hankkimiseksi viestille; wp_get_post_categories()jota voimme käyttää suoraan parametrin arvona. Täydellinen!

Tässä viimeinen kysely ja sen argumentit:

Päivitä ja sinun pitäisi nähdä 3 viestiä yhden näkymän alareunassa. Päivitä useita kertoja nähdäksesi, että ne muuttuvat, koska käskimme WordPressiä satunnaistaa ne. Huomautus: Jos sinulla on vähemmän kuin 3 viestiä samassa kategoriassa, saat alle 3 viestiä.

Se siitä! Nyt tiedät kuinka kysyä mitä tahansa haluamiasi viestejä. WP_Query -dokumentaatiosivu on erittäin hyödyllinen kyselysi säätämisessä, koska siellä on todella rajattomat mahdollisuudet. Kehotan sinua leikkiä parametrien kanssa ja ehkä yrittää tehdä erillisen malliosan käytettäväksi aiheeseen liittyville viesteille.

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