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

Opas: Viestien kyselyn tekeminen WordPressissä

10

Mitä menetelmiä on käytettävissä mukautetun viestikyselyn tekemiseen, ja milloin niitä on parasta käyttää? Tämän postauksen tavoitteena on saada vankka käsitys kahdesta menetelmästä kyselyiden tekemiseen viesteihin, miten päästä käsiksi tuloksiin, kuinka rakentaa argumentteja ja lopuksi kuinka siivota sen jälkeen. Tarkastelemme kaksi menetelmää get_posts()ja WP_Query.

Kun kyse on uuden viestikyselyn tekemisestä, on todella kaksi vaihtoehtoa (kirjoituksen aikaan). Valinta riippuu todella vain mieltymyksistäsi (ja pienestä tehokkuudesta). Yksi vaihtoehto voi sotkea maailmanlaajuisen silmukan/kyselyn, jossa olet tällä hetkellä, ellet käsittele sitä oikein. Yhdellä vaihtoehdolla käsittelet objekteja ja toisessa taulukossa. Viestikyselyn mukauttamisen argumentit ovat kuitenkin samat.

Globaali kysely?

Jos olet epävarma, mitä tarkoitan "maailmanlaajuisen kyselyn sotkemisella", se on tämä. WordPress tekee aina yhden globaalin kyselyn riippuen siitä, millä sivulla olet. Jos vierailija vierailee kategoria-arkistossa, WordPress on tehnyt tälle postauskyselyn Teema pääsee normaalisti kyselyn viesteihin käyttämällä "silmukkaa". Kun teemme uuden kyselyn omalla silmukalla tämän silmukan sisällä, meidän on varmistettava, että WordPressin globaali kysely ja kyselymme käsitellään erikseen.

Jos kuitenkin haluat muokata WordPressin viestikyselyä, se on toinen tarina. Minulla on toinen postaus, jossa käsitellään perusteellisesti, miten se tehdään.

Katsotaanpa kahta meillä olevaa vaihtoehtoa ja miten käsittelemme niitä. Sen jälkeen tarkastelemme argumentteja kyselyn mukauttamiseen. Muista, että argumentit ovat samat molemmille.

Kaksi tapaa tehdä kyselyitä viesteistä

Voit kysyä viestejä joko funktiolla get_posts()tai tekemällä uusi esiintymä WP_Query.. Ensimmäinen vaihtoehto palauttaa joukon viestejä ja toisessa käsittelet objektia. Koska get_posts()se palauttaa joukon vain viestejä, sitä on yleensä helpompi käyttää missä tahansa. Jos kuitenkin haluat sivuuttaa kyselysi, sinun kannattaa ehdottomasti luoda WP_Queryilmentymä.

Funktio get_postson käärefunktio, WP_Querymikä tarkoittaa, että se hyväksyy samat argumentit, mutta get_postssillä on muutama ylimääräinen "alias"-argumentti. WordPressin get_posts -dokumentaatiosivu ei luettele mahdollisia argumentteja (paitsi alias-argumentteja), mutta viittaa argumenttien WP_Query -dokumentaatiosivulle. Tarkastelemme argumentteja tarkemmin myöhemmin.

Jos suorituskyky on ongelma (eli sivustolla on paljon viestejä), get_postsse on nopeampi kuin käyttö, WP_Querykoska se ohittaa sivutuslaskelman.

Mukautetun viestikyselyn silmukoiden selaaminen vaihtelee valitsemasi menetelmän mukaan. Sinun pitäisi tuntea yleinen WordPress-silmukka, jota käytetään melkein kaikissa teemamalleissa:

if (have_posts()) { while (have_posts()): the_post(); // Access to each post; you can use template tags here endwhile; }

Silmukoita käyttämällä WP_Querya

Käytön tulosten silmukka WP_Queryon täsmälleen sama, paitsi että viittaamme erityisesti silmukan ilmentymäobjektiin. Meidän on myös muistettava "resetoida tila" silmukan jälkeen, jotta globaali post-objekti palautetaan siihen, mikä se oli ennen. Tätä varten käytämme wp_reset_postdata().

Jos tyhjennät objektin, jonka instantoi WP_Query( $custom_queryyllä olevassa esimerkissä), löydät koko kyselyn ja käytetyt argumentit. Mielenkiintoisia osia tässä ovat ominaisuudet " found_posts" ja " posts". Ominaisuus postssisältää tuloksen post-objekteista, joiden läpi silmukka kulkee. Hakuasi vastaavien viestien määrä palautetaan muodossa " found_posts", ja se on hyödyllinen, jos haluat tehdä mukautetun sivutuksen. Jaa tämä arvo WordPressin asetuksilla sivukohtaisten viestien määrälle selvittääksesi, kuinka monta sivua tarvitset kyselyyn, tai viittaa yksinkertaisesti ominaisuuteen " max_num_pages".

Huomautus: Kun käytät get_postsWordPressiä, se palauttaa vain postsominaisuuden (joka on taulukko) WP_Queryobjektista.

Silmukoita käyttämällä get_posts

Käyttämällä get_postsemme käytä tavallista "WordPress-silmukkaa", vaan käytämme normaalia PHP-taulukkosilmukkaa. Jokainen taulukon elementti on post-objekteja, eikä nollausta tarvita silmukan suorittamisen jälkeen. Muista, että mallitunnisteet (kuten the_title(), the_permalink()jne.) eivät ole käytettävissä tässä silmukassa. Sinun on viitattava post-objektin ominaisuuksiin (esim $custom_post->ID. ).

Suosittelen, että nimeät viestiobjekteillesi jotain muuta kuin $post. Saatat kohdata ongelmia yrittäessäsi käyttää viestin ominaisuuksia (se saattaa viitata yleiseen post-objektiin eikä silmukan viestiin).

Jos haluat käyttää mallitunnisteita helpottaaksesi viestitietojen (kuten the_title()ja the_permalink()) käyttöä, voit tehdä niin. Tee tämä käskemällä WordPressiä määrittämään globaali viestiobjekti silmukan sisällä setup_postdata(). Jos teet tämän, sinun on palautettava tila wp_reset_postdata()silmukan jälkeen.

$custom_query = get_posts([/ Arguments here /]); foreach ($custom_query as $post) { setup_postdata($post); // Template tags are available here, for example: the_title(); } wp_reset_postdata();

Muista, että setup_postdataobjektit, joiden läpi käyt läpi (asforeach-silmukan " "-osa), on nimettävä $post! Ensimmäisessä esimerkissä nimesin viestiobjektit $custom_postja tämä ei toiminut setup_postdata().

Jos kuitenkin tarvitset vain pääsyn perustietoihin, voit yhtä hyvin ohittaa globaalin post-objektin asettamisen ja käyttää mieluummin vastaavia " get_"-mallitunnisteita ja viestitunnusta. Esimerkiksi tagi the_permalink()toimii oikein vain, jos yleinen post-objekti on asetettu, mutta voit pyytää postin pysyvää linkkiä ilman yleistä post-objektia yksinkertaisesti käyttämällä echo get_the_permalink($custom_post->ID).

Kysele argumentteja

Löydät täydellisen luettelon kaikista mahdollisista argumenteista WP_Queryn dokumentaatiosivulta. Esimerkkejä parametreista ovat postaukset, joissa on tietyt termit taksonomiasta, post-meta-arvot, viestityypit, tiettyjen viestien sisällyttäminen tai poissulkeminen sekä useita vaihtoehtoja tulosten järjestämiseen. Niitä on liian monta käydäkseen läpi jokaisen yksityiskohtaisesti, mutta tässä on joitain yleisiä esimerkkejä argumenteista kyselyjen tekemiseen.

Esimerkki 1: Saman kategorian aiheeseen liittyvät viestit

Oletetaan, että haluat näyttää "aiheeseen liittyvät viestit" yksittäisen viestin lopussa. Sen pitäisi näyttää satunnaisesti valittu 3 viestiä, jotka ovat samassa kategoriassa kuin nykyinen viesti, ja sen pitäisi sulkea nykyinen viesti pois tuloksesta.

Argumentit ovat melko itsestäänselviä. Pyydän vain " post" in " post_type" ja enintään 3 viestiä " posts_per_page'.

Luokkien viestien kyselyä varten voit rakentaa tax_query -kyselyn tai käyttää yksinkertaisempaa " category__in" (Huom. Toimii vain viestikategoriassa). Yllä olevassa esimerkissä käytän wp_get_post_categories()joukon termitunnuksia, jotka on määritetty annetulle viestille, ja käytän tätä argumentissa " category__in".

Voit sulkea pois viestitunnukset merkinnällä " post__not_in", kun taas minä annoin nykyisen viestitunnuksen. Lopuksi pyysin satunnaista viestien järjestystä asettamalla " rand" kohtaan orderby". Voit tilata ne eri tavalla antamalla esim. " title" tai " ". dateTutustu tilausasiakirjoihin nähdäksesi, mikä on mahdollista.

Esimerkki 2: Kaikki mukautetun viestityypin viestit, joissa on useita järjestysargumentteja

Tässä esimerkissä oletetaan, että sinulla on mukautettu viestityyppi " book" ja mukautetussa sivumallissa haluat näyttää kaikki julkaistut kirjat. Haluat järjestää postaukset ensisijaisesti menu_order (sivu-attribuutti, se on numero, jonka voit asettaa postausta kohti) ja toiseksi julkaisun otsikon mukaan.

Argumentit ovat jälleen melko itsestäänselviä. Pyydän viestityyppiä ‘ book‘ nimellä ‘ post_type‘. Kun asetat posts_per_pagearvoksi -1, se hakee kaikki (julkaistut viestit, ellet määritä jotain muuta post_statusargumentissa " "). Lopuksi tarjoan taulukon orderbyWordPressille, jotta se lajittelee viestit ensisijaisesti valikon järjestyksen mukaan nousevaan järjestykseen ja toiseksi postauksen otsikon laskevaan järjestykseen.

Esimerkki 3: Viestit, joissa on mukautettuja metatietoja

Oletetaan, että sinulla on mukautettu postaustyyppi bookja haluat tehdä kyselyn kaikista kirjoista, jotka ovat joko julkaisemattomia tai kirjoja, jotka on julkaistu vuosina 1990–2019.

Kyselyn rakentaminen post-metalla on parasta tehdä meta_query(hyvin yksinkertaisille meta-argumenteille voit käyttää meta_keyja meta_valuesuoraan). Argumentti meta_queryvaatii taulukon, jossa jokainen argumentti on taulukko. Voit hallita kunkin argumentin välistä suhdetta ‘ relation‘:llä, jonka asetin ORyllä olevassa esimerkissä arvoon ‘ ‘.

Annan kaksi metatietoargumenttia kohteelle " meta_query". Ensimmäinen vertaa metaavainta ‘ book_status‘ tekstiin ‘ unpublished‘, ja jos se on yhtä suuri, se sisällytetään. Toisessa argumentissa kerron WordPressille, että se saa minkä tahansa arvon metaavaimeen ‘ year_published‘, joka on numeroiden 1990 ja 2019 välillä.

Johtopäätös

Sinulla pitäisi nyt olla perustiedot kahdesta viestien kyselymenetelmästä. Sillä ei ole suurta eroa, koska voit rakentaa saman kyselyn molemmilla, mutta tapa käsitellä näitä kahta on erilainen. Kolme annettua esimerkkiä kyselyargumenteista koskettavat vain niiden kyselyjen pintaa, joita voit rakentaa. Katso WP_Query-dokumentaatiosta täydellinen yleiskatsaus ja runsaasti esimerkkejä.

Jos olet utelias kuinka muokata WordPressin suorittamaa globaalia kyselyä, minulla on erillinen viesti, jossa käsitellään sitä.

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