Tässä on miten saada haluamasi viestit WP_Queryn avulla

Tässä on miten saada haluamasi viestit WP_Queryn avulla

Tässä on miten saada haluamasi viestit WP_Queryn avulla
СОДЕРЖАНИЕ
02 июня 2020

Jos olet jo aiemmin rakentanut yksinkertaisia ​​teemoja, ei todennäköisesti tarvitse hakea omia viestejäsi. Loppujen lopuksi WordPress lataa viimeisimmät 10 viestiä pääsivulta ja oikeat viestit arkistosivuilla. Entä monimutkaisemmat skenaariot? Entä, jos haluat lajitellun sivukartan ja haluat luetella kaikki viestit ja sivut päivämäärän mukaan järjestetty?


WP_Query on ystäväsi, sen avulla voit vetää viestejä tietokannasta kriteeriesi mukaan. Voit hakea kaikki viestit yhdestä luokasta, jotka sisältävät myös tietyt tunnisteet. Voit noutaa kaikki viime vuonna luodut sivut ja viestit, joilla ei ole esiteltyä kuvaa.

Tässä postituksessa annan sinulle syvällisen kuvan siitä, kuinka WP_Query toimii – aloitetaan!

Mukautettu silmukka

Avain hyvin toimivien mukautettujen kyselyiden kanssa on niiden argumentien hallitseminen, jotka voit välittää niille. Luodaan nopea ennen kuin tarkastelemme tätä "luuranko-" voimme käyttää luetteloimaan viestejä. Normaalin arkistosivun silmukka näyttää tältä:

<?php if (have_posts ()): ?>
<?php while (have_posts ()): the_post () ?>

<?php lopulta ?>
<?php muu: ?>

<?php endif ?>

Tämä toimii hienosti, koska WordPress on jo hakenut oikeat viestit ennen sivun lataamista. Kun kirjoitamme mukautettua kyselyä, tarvitsemme mukautetun silmukan. Koodi on hyvin samanlainen, tässä seuraa:

<?php
$ args = taulukko (
‘post_type’ => ‘lähettää’,
‘post_status’ => ‘Tulevaisuus’
);
$ ajoitettu = uusi WP_Query ($ args);

if ($ ajoitettu->have_posts ()):
?>
<?php kun taas ($ ajoitettu->have_posts ()): $ ajoitettu->Posti() ?>

<?php lopulta ?>
<?php muu: ?>

<?php endif ?>

Luomme uuden WordPress-kyselyn WP_Query-luokan avulla siirtämällä sen parametrit määrittelemään tarvitsemiemme viestityypit. Sitten kutsutaan have_posts () – ja the_post () -menetelmiä $ ajoitetussa objektissamme.

Jos olet uusi olio-ohjelmointi ja et tiedä miksi, älä huolestu, voit silti käyttää mukautettuja kyselyitä helposti. Keskitymme koko postituksen $ args -ryhmään, joka on melko suoraviivainen.

Yksinkertaiset väitteet

Kuten mainitsin, tärkein "tietokokonaisuus" kun kyse on WP_Querystä, se löytyy sen perusteluista. Codex luettelee ne kaikki, tarkastelemme tässä hyödyllisimpiä.

Jotkut argumentit ovat melko yksinkertaisia, kuten tunniste tai tag_id-parametri. Entinen ottaa tag-etanan, myöhemmin tag-tunnuksen. Voit myös erottaa useita kohteita pilkuilla tai käyttää negatiivisia tunnuksia osoittaaksesi, että haluat hakea viestejä, jotka tekevät ei kiinnitä kyseinen tunniste.

$ args = taulukko (
‘post_type’ => ‘lähettää’,
‘tag_id’ => ’22, 92,44, -21′
);
$ our_posts = uusi WP_Query ($ args);

Katkelma noutaa artikkelit, joihin on kiinnitetty jokin kolmesta ensimmäisestä tunnisteesta, mutta ei neljättä. Vaikka tämä järjestelmä on riittävän tehokas yksinkertaisiin tarpeisiin, käytän yleensä paljon joustavampaa taksonomiakyselyä, josta puhun vähän myöhemmin.

Kirjailija, kirjoittajan_nimi, kissa, luokan_nimi, s (hakutermeille), post_status, post_type ovat esimerkkejä muutamista yksinkertaisemmista kentistä. Huomaa, että jotkut kentät, kuten post_status, edellyttävät, että lähetät joukon tilaa, jos haluat käyttää useita arvoja.

$ args = taulukko (
‘post_type’ => taulukko (‘viesti’, ‘sivu’),
‘post_status’ => ryhmä (‘luonnos’, ‘julkaise’),
‘kissa’ => ‘musiikkivideot’
);
$ our_posts = uusi WP_Query ($ args);

Yllä oleva esimerkki noutaa kaikki viestit, jotka ovat joko sivuja tai viestejä; on joko julkaistu tai luonnostilassa ja niille on määritetty joko musiikki- tai videoluokka. Tätä voidaan käyttää kaikkien nykyisen tai suunnitellun musiikkiin tai videoihin liittyvän sisällön otsikoiden näyttämiseen.

Taksonomian kyselyt

Yksinkertaisten juttujen tapauksessa riittää, että mainituilla argumenteilla haetaan viestejä luokkien tai tunnisteiden perusteella, mutta entä jos sinulla on mukautettu taksonomia tai joudut yhdistämään useita parametreja? Vastaus löytyy tax_query-argumentista, joka itsessään on taulukko. Katsotaanpa ensin esimerkkiä.

$ args = taulukko (
‘post_type’ => ‘kirja’,
‘tax_query’ => array (
array (
‘taksonomia’ => ‘Genre’,
‘kenttä’ => ‘etana’,
‘termit’ => ryhmä (‘scifi’, ‘trilleri’),
‘operaattori’ => ‘EI MUKANA’,
),
array (
‘taksonomia’ => ‘Kirjailija’,
‘kenttä’ => ‘Id’,
‘termit’ => ryhmä (92, 883, 399),
),
‘suhde’ => ‘JA’,
),
);
$ kysely = uusi WP_Query ($ args);

Täältä noutamme joitain viestejä teosviestityypistämme lisäämällä joitain taksonomiaparametreja. Käyttämällä kahta taulukossa tax_query määriteltyä taulukkoa olemme määritellyt, että haluamme vetää kirjoittajia kirjoittajien 92, 883 tai 399 kirjoittamista kirjoista, jotka ovat ei sci-fi- tai trillerigenreissä. Suhdeparametri määrittelee kahden taulukon välisen suhteen. Meidän tapauksessamme se on “ja” suhteet, jotka tarkoittavat, että molemmat ehdot on täytettävä.

Jos olisimme käyttäneet ‘tai’, olisimme noudelleet kirjat, jotka eivät joko kuulu sci-fi- tai trilleri-luokkaan tai joiden kirjoittajat ovat määriteltyjä kolmea kirjoittajaa. Englanninkielisesti tämä tarkoittaa: Haluan nähdä kaikki kirjani paitsi sci-fi- ja trillerilaji. Haluan kuitenkin nähdä kaikki Terry Pratchettin, Douglas Adamsin ja Stephen Kingin kirjat genrestä riippumatta.

Metakyselyt

Metakyselyt ovat rakenteeltaan hyvin samanlaisia ​​kuin taksonomiakyselyt, mutta niiden avulla suodatetaan viestejä post meta -taulukosta. Alla oleva koodi näyttää kaikki julkaistut viestit, joissa on esitelty kuva.

$ args = taulukko (
‘post_type’ => ‘lähettää’,
‘meta_query’ => array (
array (
‘avain’ => ‘_Thumbnail_id’,
‘arvo’ => ”,
‘vertaa’ => ‘! =’,
),
),
);
$ kysely = uusi WP_Query ($ args);

WordPress tallentaa viestin esitellyn kuvan tunnuksen _pikkukuvan_id-kentän avulla. Joten jos haemme kaikki viestit, joissa tämä meta-arvo ei ole tyhjä, meidän pitäisi päätyä kaikkiin viesteihin, joissa on esitelty kuva.

Tässä salaisuus on tietäminen kuinka käyttää omaisuutta ja tyyppiä. Voit käyttää monia arvoja, jotka SQL: n tulisi olla tuttuja: ‘=’, ‘! =’, ‘>’,’>= ‘,'<‘,'<= ‘,’ LIKE ‘,’ EI LIKE ‘,’ IN ‘,’ EI IN ‘,’ VÄLILLÄ ‘,’ EI VÄLILLÄ ‘,’ OLEMASSA OLEVAT ‘(WordPress 3.5: stä ja uudemmat) ja’ EI OLEMASSA ‘(WordPress 3.5: stä) ja ylös)

Tyyppiominaisuus on yleensä tärkeä, kun haluat verrata numeroita tai päivämääriä. Mahdollisia arvoja ovat ‘NUMERO’, ‘BINARY’, ‘CHAR’, ‘DATE’, ‘DATETIME’, ‘DECIMAL’, ‘SIGNED’, ‘TIME’, ‘UNIGIGNED’. Muista käyttää NUMEROA vertaamalla numeroita, useimmissa tapauksissa sinun pitäisi olla hyvä.

Aivan kuten taksonomiakyselyissä, voit pinota useita vaatimuksia ja määrittää niiden välillä suhteen käyttämällä relaatioparametria.

$ args = taulukko (
‘post_type’ => ‘lähettää’,
‘meta_query’ => array (
‘suhde’ => ‘TAI’,
array (
‘avain’ => ‘mieliala’,
‘arvo’ => ryhmä (‘onnellinen’, ‘mahtava’),
‘vertaa’ => ‘SISÄÄN’,
),
array (
‘avain’ => ‘tulo’,
‘arvo’ => 500,
‘vertaa’ => ‘>’,
‘tyyppi’ => ‘NUMERIC’
),
),
);
$ kysely = uusi WP_Query ($ args);

Yllä oleva esimerkki näyttää viestit hypoteettisesta päiväkirjasta, jossa tapahtui jotain hyvää. Tunsin joko onnellinen tai mahtava tai tein yli 500 dollaria sinä päivänä.

Päivämääräparametrit

Päivämäärät voivat olla hieman monimutkaisia, mutta ovat erittäin joustavia. WP_Query-dokumentaatio on paljon esimerkkejä, jos tarvitset lisätietoja.

Viestien hakeminen tietystä ajasta on melko helppoa. Voit määrittää ajan vuoden, kuukauden, w (vuoden viikko), päivän ja muutaman muun parametrin avulla. Alla oleva koodi noutaa kaikki viestit maaliskuusta 2013.

$ args = taulukko (
‘post_type’ => ‘lähettää’,
‘vuosi’ => 2013,
‘kuukausi’ => 3
);
$ kysely = uusi WP_Query ($ args);

Jos haluat päästä monimutkaisemmille aikaväleille, sinun on käytettävä date_query-tunnistetta. Tämän avulla voit määrittää mielivaltaiset alueet melko helposti, käyttämällä tuttua taulukkomuotoa. Seuraava esimerkki – Codexin kohteliaisuudesta – osoittaa, kuinka voit noutaa virkoja, jotka kirjoitettiin arkipäivisin kello 9.00–17.00..

$ args = taulukko (
‘post_type’ => ‘lähettää’,
‘päiväyskysely’ => array (
array (
‘tunti’ => 9,
‘vertaa’ => ‘>=’,
),
array (
‘tunti’ => 17,
‘vertaa’ => ‘<=’,
),
array (
‘päiväviikko’ => ryhmä (2, 6),
‘vertaa’ => ‘VÄLILLÄ’,
),
),
);
$ kysely = uusi WP_Query ($ args);

Tulosten tilaaminen

Luettelojärjestys, jossa luettelo esitetään, on yhtä tärkeä kuin sisällä olevat elementit. Onneksi WordPress tarjoaa meille order_by- ja order-parametrit. Tilausparametri on melko suoraviivainen, voit käyttää ASC: tä tai DESC: tä nousevan tai laskevan tilaamiseen.

Order_by -parametrilla voi olla useita arvoja: ‘ei’, ‘ID’, ‘kirjoittaja’, ‘otsikko’, ‘nimi’, ‘tyyppi’, ‘päivämäärä’, ‘muokattu’, ‘vanhempi’, ‘rand’ , ‘kommentti_luku’, ‘valikkokohta’, ‘meta_arvo’, ‘meta_arvo_num’, ‘post__in’. Tilaaminen meta_value-arvosta voi olla erityisen hyödyllistä. Tässä tapauksessa älä unohda myös määrittää meta_key-kenttä.

$ args = taulukko (
‘post_type’ => ‘maalaus’,
‘meta_query’ => array (
array (
‘avain’ => ‘hinta’,
‘arvo’ => 50000,
‘vertaa’ => ‘>’,
‘tyyppi’ => ‘NUMERIC’
),
),
‘order_by’ => ‘Meta_value_num’,
‘meta_key’ => ‘hinta’
);
$ kysely = uusi WP_Query ($ args);

Tämä esimerkki noutaa maalauksia, joiden arvo on yli 50 000 dollaria, ja tilaa ne nousevan hinnan mukaan. Huomaa, että koska hinta on tallennettu numerona, tulosten tilaamiseen käytin meta_value_num, toisin kuin merkkijonoihin käytetty meta_value.

Toinen mainitsemisen arvoinen tilaus on post__in. Tämä post__in on itsenäinen parametri, sen avulla voit määrittää noudettavien postitunnusten joukon. Oletuksena WordPress tilaa viestit päivämäärän mukaan, post__in -kohdassa määritettyä järjestystä ei säilytetä. Jos käytät post__in-tilausta myös arvon mukaan, WordPress säilyttää tilauksen.

$ args = taulukko (
‘post_type’ => ‘lähettää’,
‘post__in’ => ryhmä (23, 441, 12, 322, 34, 33),
‘order_by’ => ‘Post__in’,
);
$ kysely = uusi WP_Query ($ args);

Käärimistä

Toivon, että tästä WP_Query-johdannosta käy selvästi ilmi, että tämä on todella tehokas luokka. Sen avulla voit noutaa viestejä omilla kriteereilläsi WP-standardin mukaisesti. Katso sitä dokumentointi lisätietoja ja hienoja ominaisuuksia ja menetelmiä, jotka tämä luokka tarjoaa manipuloida kyselyä ja silmukkaa.

WP_Query on osa mitä tekee WordPressistä suuren yleisen CMS: n – kyky hakea esineitä tietokannasta modulaarisesti ja muokattavissa olevalla tavalla.

Jos sinulla on kysyttävää, ota meihin yhteyttä kommenteissa!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Это интересно
    Adblock
    detector