Siit saate teada, kuidas WP_Query abil soovitud postitusi hankida

Kui olete varem ehitanud lihtsaid teemasid, siis ei tekkinud vajadust ise postitusi hankida. Lõppude lõpuks laadib WordPress pealehelt viimased 10 postitust ja arhiivilehtedel õiged postitused. Aga keerukamad stsenaariumid? Mis siis, kui soovite sortide saidiplaani ja soovite loetleda kõik oma postitused ja lehed kuupäeva järgi järjestatud?


WP_Query on teie sõber, see võimaldab teil andmebaasist postitusi oma kriteeriumide järgi tõmmata. Saate hankida kõik postitused ühest kategooriast, mis sisaldavad ka teatud silte. Võite hankida kõik eelmisel aastal loodud lehed ja postitused, millel pole esiletõstetud pilti.

Selles postituses annan teile põhjaliku ülevaate WP_Query toimimisest – alustame sellest!

Kohandatud silmus

Kohandatud päringutega töötamise võti on nende argumentide valdamine, mida saate neile edastada. Enne kui seda vaatame, loogem kiire "luustik" saame kasutada postituste loetlemiseks. Silmus tavalisel arhiivilehel näeks välja umbes selline:

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

<?php lõpuks ?>
<?php muu: ?>

<?php endif ?>

See töötab hästi, sest enne lehe laadimist on WordPress juba õiged postitused alla laadinud. Kohandatud päringu kirjutamisel on vaja kohandatud silmust. Kood on väga sarnane, siin on järgmine:

<?php
$ args = array (
‘post_type’ => ‘post’,
‘post_status’ => ‘tulevik’
);
$ planeeritud = uus WP_Query ($ args);

if (kavandatud $->have_posts ()):
?>
<?php while ($ planeeritud->have_posts ()): $ planeeritud->the_post () ?>

<?php lõpuks ?>
<?php muu: ?>

<?php endif ?>

Loome uue WordPressi päringu, kasutades klassi WP_Query, edastades selle parameetrid, et täpsustada vajalike postituste tüübid. Seejärel kutsume meie $ ajastatud objektil meetodeid have_posts () ja the_post ().

Kui olete uus, objektorienteeritud programmeerimine ja te ei saa täpselt aru, miks see on, siis ärge muretsege, saate ikkagi kohandatud päringuid hõlpsalt kasutada. Keskendume kogu postituse vältel $ argsi massiivile, mis on üsna sirgjooneline.

Lihtsad argumendid

Nagu ma mainisin, peamine "teadmiste kogu" kui rääkida WP_Query-st, peituvad selle argumendid. Koodeks loetleb need kõik, vaatame siin kõige kasulikumaid.

Mõned argumendid on üsna lihtsad, näiteks silt või parameeter tag_id. Esimene võtab sildi nälkja, hiljem sildi ID. Samuti saate eraldada mitu üksust komadega või kasutada negatiivseid ID-sid, et näidata, kas soovite taastada postitusi mitte lisage see konkreetne silt.

$ args = array (
‘post_type’ => ‘post’,
‘tag_id’ => ’22, 92,44, -21 ‘
);
$ our_posts = uus WP_Query ($ args);

Koodilõik tooks välja artiklid, millel on ükskõik milline kolmest esimesest sildist, kuid mitte neljas. Ehkki see süsteem on lihtsateks vajadusteks piisavalt võimas, kasutan tavaliselt palju paindlikumat taksonoomiapäringut, mida arutame natuke hiljem.

Autor, autorinimi, kass, kategooria_nimi, s (otsinguterminite jaoks), post_status, post_type on näited veel mitmest lihtsast väljast. Pange tähele, et mõned väljad, näiteks post_status, nõuavad mitmete väärtuste kasutamiseks olekute massiivi ületamist.

$ args = array (
‘post_type’ => massiiv (‘post’, ‘leht’),
‘post_status’ => massiiv (‘mustand’, ‘avalda’),
‘kass’ => ‘muusika, videod’
);
$ our_posts = uus WP_Query ($ args);

Ülaltoodud näites tuuakse kõik postitused, mis on kas lehed, postitused; on kas avaldatud või mustandina ning neile on määratud kas muusika või video kategooria. Seda saab kasutada muusika või videotega seotud mis tahes praeguse või kavandatava sisu pealkirjade kuvamiseks.

Taksonoomia päringud

Lihtsa asja jaoks piisab mainitud argumentide kasutamisest kategooriate või siltide põhjal postituste leidmiseks, kuid mis saab siis, kui teil on kohandatud taksonoomia või peate ühendama mitu parameetrit? Vastus peitub argumendis tax_query, mis ise on massiiv. Vaatame kõigepealt näidet.

$ args = array (
‘post_type’ => ‘raamat’,
‘tax_query’ => massiiv (
massiiv (
‘taksonoomia’ => ‘žanr’,
‘väli’ => ‘nälkjas’,
‘mõisted’ => massiiv (‘scifi’, ‘thriller’),
‘operaator’ => ‘EI OLE’,
),
massiiv (
‘taksonoomia’ => ‘autor’,
‘väli’ => ‘id’,
‘mõisted’ => massiiv (92, 883, 399),
),
‘suhe’ => ‘JA’,
),
);
$ päring = uus WP_Query ($ args);

Siit toome mõned postitused oma „raamatu” postitüübist, lisades mõned taksonoomiaparameetrid. Kasutades kaht tax_query’is määratletud massiivi, täpsustasime, et tahame tõmmata autori 92, 883 või 399 kirjutatud raamatuid, mis on mitte sci-fi või thrilleri žanris. Seoseparameeter määratleb kahe massiivi vahelise suhte. Meie puhul tähendab see suhteid, mis tähendavad, et mõlemad tingimused peavad olema täidetud.

Kui oleksime kasutanud sõna „või”, oleksime otsinud raamatud, mis ei kuulu sci-fi või thrilleri kategooriasse või on kirjutatud nimetatud kolme autori poolt. Lihtsas inglise keeles tähendab see: ma tahan näha kõiki oma raamatuid, välja arvatud sci-fi ja thrilleri žanr. Siiski tahan näha kõiki Terry Pratcheti, Douglas Adamsi ja Stephen Kingi raamatuid, sõltumata žanrist.

Metapäringud

Metapäringud on struktuurilt väga sarnased taksonoomiapäringutega, kuid postituste filtreerimiseks kasutavad nad postituse metatabeli andmeid. Allolev kood kuvab kõik avaldatud postitused, millel on esiletõstetud pilt.

$ args = array (
‘post_type’ => ‘post’,
‘meta_query’ => massiiv (
massiiv (
‘võti’ => ‘_thumbnail_id’,
‘väärtus’ => ”,
‘võrdle’ => ‘! =’,
),
),
);
$ päring = uus WP_Query ($ args);

WordPress salvestab postituse esiletõstetud pildi ID, kasutades välja _thumbnail_id. Nii et kui toome tagasi kõik postitused, kus see metaväärtus pole tühi, peaksime lõpptulemusena leidma kõik postitused, millel on esiletõstetud pilt.

Siin peitub saladus teada, kuidas vara ja tüüpi võrrelda. Võite kasutada arvukalt väärtusi, mis peaksid SQL-ist tuttavad olema: ‘=’, ‘! =’, ‘>’,’>= ‘,'<‘,'<= ‘,’ LIKE ‘,’ NOT LIKE ‘,’ IN ‘,’ NOT IN ‘,’ BETWEEN ‘,’ NOT BETWEENEN ‘,’ EXISTS ‘(WordPress 3.5 ja uuemad versioonid) ja’ NOT EXISTS ‘(WordPress 3.5 versioonist) ja üles)

Tüübiomadus on tavaliselt oluline, kui soovite numbreid või kuupäevi võrrelda. Võimalikud väärtused on ‘NUMERIC’, ‘BINARY’, ‘CHAR’, ‘DATE’, ‘DATETIME’, ‘DECIMAL’, ‘SIGNED’, ‘TIME’, ‘UNIGIGNED’. Pidage meeles, et numbrite võrdlemisel peaksite kasutama NUMERIC, enamikul muudel juhtudel peaksite olema korras.

Nii nagu taksonoomiapäringute korral, saate virnastada mitu nõuet ja seejärel kasutada seost parameetri abil nendevahelise suhte täpsustamiseks.

$ args = array (
‘post_type’ => ‘post’,
‘meta_query’ => massiiv (
‘suhe’ => VÕI,
massiiv (
‘võti’ => ‘tuju’,
‘väärtus’ => massiiv (‘õnnelik’, ‘vinge’),
‘võrdle’ => ‘IN’,
),
massiiv (
‘võti’ => ‘sissetulek’,
‘väärtus’ => 500,
‘võrdle’ => ‘>’,
‘tüüp’ => ‘NUMERIC’
),
),
);
$ päring = uus WP_Query ($ args);

Ülaltoodud näites kuvatakse hüpoteetilise päeviku postitused, kus juhtus midagi head. Tundsin end kas õnnelikuna või vingena või teenisin sel päeval rohkem kui 500 dollarit.

Kuupäeva parameetrid

Kuupäevad võivad olla pisut keerulised, kuid on väga paindlikud. WP_Query dokumentatsioon on palju näiteid, kui vajate lisateavet.

Teatud aja jooksul postituste toomine on üsna lihtne. Aja määramiseks võite kasutada aastat, kuu, w (aasta nädal), päeva ja veel mõnda muud parameetrit. Allolev kood tooks välja kõik postitused alates 2013. aasta märtsist.

$ args = array (
‘post_type’ => ‘post’,
‘aasta’ => 2013,
‘kuu’ => 3
);
$ päring = uus WP_Query ($ args);

Kui soovite pääseda keerukamatesse ajavahemikesse, peate kasutama kuupäeva_päringut. See võimaldab teil suvalisi vahemikke üsna hõlpsalt määrata, kasutades tuttavat massiivi vormingut. Järgmine näide – koodeksi viisakusest – näitab, kuidas saate tööpäevadel alla laadida postitusi, mis olid kirjutatud kella 9–17..

$ args = array (
‘post_type’ => ‘post’,
‘date_query’ => massiiv (
massiiv (
‘tund’ => 9,
‘võrdle’ => ‘>= ‘,
),
massiiv (
‘tund’ => 17,
‘võrdle’ => ‘<= ‘,
),
massiiv (
“nädala nädala” => massiiv (2, 6),
‘võrdle’ => “VAHEL”,
),
),
);
$ päring = uus WP_Query ($ args);

Tulemuste tellimine

Loendi esitamise järjekord on sama oluline kui selles sisalduvad elemendid. Õnneks pakub WordPress meile tellimuste ja tellimuste parameetreid. Tellimuse parameeter on üsna sirgjooneline, kasvava või laskuva tellimiseks võite kasutada ASC või DESC.

Parameeter order_by võib omandada mitmeid väärtusi: ‘puudub’, ‘ID’, ‘autor’, ‘pealkiri’, ‘nimi’, ‘tüüp’, ‘kuupäev’, ‘muudetud’, ‘vanem’, ‘rand’ , ‘comment_count’, ‘menu_order’, ‘meta_value’, ‘meta_value_num’, ‘post__in’. Eriti kasulik võib olla tellimine meta_väärtuse järgi. Sel juhul ärge unustage täpsustada ka väli_võtmeväli.

$ args = array (
‘post_type’ => ‘maalimine’,
‘meta_query’ => massiiv (
massiiv (
‘võti’ => ‘hind’,
‘väärtus’ => 50000,
‘võrdle’ => ‘>’,
‘tüüp’ => ‘NUMERIC’
),
),
‘tellida_by’ => ‘meta_value_num’,
‘meta_key’ => ‘hind’
);
$ päring = uus WP_Query ($ args);

Selles näites on toodud maalid, mille väärtus on üle 50 000 USD, ja tellitakse nende järgi kasvavad hinnad. Pange tähele, et kuna hind on salvestatud numbrina, kasutasin tulemuste tellimiseks meta_value_num, mitte stringe kasutavat meta_value.

Veel üks mainimist väärt tellimine on post__in. See post__in on omaette parameeter, see võimaldab teil määrata allalaaditavate postituste ID-massiivi. Vaikimisi tellib WordPress postitusi kuupäeva järgi, post__in-is määratud järjekorda ei säilitata. Kui kasutate tellimusena väärtuse järgi ka post__in, säilitab WordPress tellimuse.

$ args = array (
‘post_type’ => ‘post’,
‘post__in’ => massiiv (23, 441, 12, 322, 34, 33),
‘tellida_by’ => ‘post__in’,
);
$ päring = uus WP_Query ($ args);

Mähkimine üles

Loodan, et sellest WP_Query sissejuhatusest on selge, et see on tõepoolest võimas klass. See võimaldab teil postitusi WP-standardil põhinevate kriteeriumide abil alla laadida. Vaata seda dokumentatsioon lisateabe saamiseks ja mõne suurepärase omaduse ja meetodi jaoks, mida see klass pakub päringu ja ahelaga manipuleerimiseks.

WP_Query on osa sellest, mis teeb WordPressist suurepärase üldise CMS-i – võimaluse andmebaasist objekte modulaarselt ja kohandatavalt hankida.

Kui teil on küsimusi, andke meile sellest kommentaarides teada!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map