✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Juhend: kuidas WordPressis postitusi päringuid teha

10

Millised meetodid on kohandatud postituspäringu tegemiseks saadaval ja millal on neid kõige parem kasutada? Selle postituse eesmärk on luua kindel arusaam kahest postituste pärimise meetodist, kuidas pääseda juurde tulemustele, kuidas luua argumente ja lõpuks, kuidas pärast seda puhastada. Kaks meetodit, mida me vaatleme, on get_posts()ja WP_Query.

Kui tegemist on uue postituse päringu tegemisega, on (kirjutamise ajal) kaks võimalust. Valik sõltub tõesti teie eelistustest (ja mõnest väiksemast tulemuslikkusest). Üks võimalus võib teie praegu kasutatava globaalse ahela/päringu segi ajada, kui te seda õigesti ei käsitle. Ühe valikuga käsitlete objekte ja teise valiku korral massiivi. Postituspäringu kohandamise argumendid on aga identsed.

Globaalne päring?

Kui te pole kindel, mida ma mõtlen terminiga "globaalse päringu segamine", siis see on see. WordPress teeb alati ühe globaalse päringu, olenevalt sellest, millisel lehel olete. Kui külastaja külastab kategooriaarhiivi, on WordPress teinud selle kohta postituspäringu. Teema pääseb tavaliselt päringu postitustele juurde, kasutades "silmust". Kui teeme uue päringu, millel on selle tsükli sees oma tsükkel, peame tagama, et WordPressi globaalset päringut ja meie päringut käsitletakse eraldi.

Kui soovite aga WordPressi postituspäringut muuta, on see teine ​​lugu. Mul on veel üks postitus, mis käsitleb seda, kuidas seda teha.

Vaatame kahte võimalust, mis meil on ja kuidas me nendega tegeleme. Pärast seda vaatame päringu kohandamise argumente. Pidage meeles, et mõlema argumendid on identsed.

Postituste päringute tegemise kaks meetodit

Postituste kohta saate päringuid teha kas funktsiooniga get_posts()või uue eksemplari loomisega WP_Query.. Esimene valik tagastab postituste massiivi ja teises käsitlete objekti. Kuna get_posts()tagastab massiivi ainult postitustest, on seda tavaliselt lihtsam kasutada kõikjal, kus soovite. Kui aga soovite oma päringut lehekülgedele lisada, peaksite kindlasti looma WP_Queryeksemplari.

Funktsioon get_postson ümbrisfunktsioon, WP_Querymis tähendab, et see aktsepteerib samu argumente, kuid get_postssellel on mõned täiendavad "aliase" argumendid. WordPressi dokumentatsioonileht get_posts jaoks ei loetle võimalikke argumente (välja arvatud pseudonüümi argumendid), vaid viitab argumentide jaoks WP_Query dokumentatsioonilehele. Vaatleme argumente hiljem lähemalt.

Kui toimivus on probleem (st saidil on palju postitusi), get_postson see kiirem kui kasutamine, WP_Querykuna jätab lehekülgede arvu arvutamise vahele.

Kohandatud postituspäringu läbimise meetod erineb olenevalt valitud meetodist. Peaksite olema tuttav tavalise WordPressi tsükliga, mida kasutatakse peaaegu kõigis teemamallides:

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

Looming WP_Query abil

Kasutamise tulemuste WP_Queryloomine on täpselt sama, välja arvatud see, et viitame konkreetselt tsüklis esinevale eksemplariobjektile. Peame meeles pidama ka oleku lähtestamist pärast silmuste loomist, nii et globaalne postitusobjekt naaseb sellele, mis see oli. Selleks kasutame wp_reset_postdata().

Kui tühjendate objekti, mille instantseerib WP_Query( $custom_queryülaltoodud näites), leiate kogu päringu ja kasutatud argumendid. Huvitavad osad siin on atribuudid " found_posts" ja " posts". Atribuut " posts" sisaldab postiobjektide tulemust, millest tsükkel läbib. Teie päringule vastanud postituste arv tagastatakse kaustas „ found_posts" ja see on kasulik, kui soovite teha kohandatud lehekülgede järjekorda. Jagage see väärtus WordPressi sättega postituste arvu kohta lehel, et välja selgitada, mitu lehekülge teil oma päringu jaoks vaja on, või viidake lihtsalt atribuudile " max_num_pages".

Märkus. Kui kasutate get_postsWordPressi, tagastab WordPress objektilt ainult postsatribuudi " " (mis on massiiv) .WP_Query

Looming kasutades get_posts

Kasutades get_postsei kasuta me tavalist “WordPressi tsüklit”, selle asemel kasutame tavalist PHP massiivisilmust. Iga massiivi element on postiobjekt ja pärast silmuse loomist pole lähtestamine vajalik. Pidage meeles, et mallisildid (nt the_title()jne the_permalink()) pole selles tsüklis saadaval. Peate viitama postitusobjekti omadustele (nt $custom_post->ID).

Soovitan oma postitusobjektidele anda teistsuguse nime kui $post. Postituse atribuutidele juurde pääsedes võib tekkida probleeme (see võib viidata globaalsele postitusobjektile, mitte tsüklis olevale postitusele).

Kui soovite postitusteabe lihtsamaks juurdepääsuks kasutada mallisilte (nt the_title()ja the_permalink()), saate seda teha. Selleks käske WordPressil seadistada tsükli sees globaalne postitusobjekt koos setup_postdata(). Kui teete seda, peate lähtestama oleku wp_reset_postdata()pärast silmust.

$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();

Pidage meeles, et setup_postdataobjektid, mida läbite (" as" osa foreach-tsüklis), peavad olema nimed $post! Esimeses näites nimetasin postituse objektid $custom_postja see ei töötaks koos setup_postdata().

Kui aga vajate juurdepääsu põhilisele postitusteabele, võite globaalse postitusobjekti seadistamise ka vahele jätta ja pigem kasutada vastavaid " get_"-malli silte ja postituse ID-d. Näiteks silt the_permalink()töötab õigesti ainult siis, kui globaalne postitusobjekt on seadistatud, kuid saate taotleda postituse püsilinki ilma globaalse postitusobjektita, kasutades lihtsalt echo get_the_permalink($custom_post->ID).

Päringuargumendid

Kõigi võimalike argumentide täieliku loendi leiate WP_Query dokumentatsiooni lehelt. Parameetrite näideteks on postitused, mis sisaldavad taksonoomiast kindlat terminit, postituse metaväärtused, postituste tüübid, konkreetsete postituste kaasamine või välistamine ning terve hulk tulemuste järjestamise võimalusi. Neid on liiga palju, et igaüks neist üksikasjalikult läbi käia, kuid siin on mõned levinumad näited postituste päringute esitamise argumentidest.

Näide 1: seotud postitused samast kategooriast

Oletame, et soovite ühe postituse lõpus kuvada "seotud postitused". See peaks näitama juhuslikult valitud 3 postitust, mis on praeguse postitusega samas kategoorias, ja see peaks praeguse postituse tulemusest välja jätma.

Argumendid on üsna iseenesestmõistetavad. Ma palun ainult ‘ post" in " post_type" ja maksimaalselt 3 postitust " posts_per_page'.

Kategooriate kaupa postituste päringute tegemiseks saate koostada tax_query või kasutada lihtsamat " category__in" (NB: töötab ainult postituste kategooria puhul). Ülaltoodud näites kasutan ma wp_get_post_categories()pakutud postitusele määratud termini ID-de massiivi saamiseks ja kasutan seda argumendi " category__in" jaoks.

Postituse ID-d saate välistada märkega „ post__not_in“, samas kui mina esitasin praeguse postituse ID. Lõpuks küsisin postituste juhuslikku järjekorda, määrates ‘ rand‘ sisse " orderby". Nende erinevaks järjestamiseks võite lisada nt " title" või " ". dateVaadake tellimise dokumentatsiooni, et näha, mis on võimalik.

Näide 2: kõik postitused kohandatud postitustüübist koos mitme järjestamisargumendiga

Selles näites eeldame, et teil on kohandatud postituse tüüp " book" ja kohandatud lehemallis soovite kuvada kõik avaldatud raamatud. Soovite postitusi järjestada eelkõige menu_order (lehe atribuut, see on number, mille saate postituse kohta määrata) ja teiseks postituse pealkirja järgi.

Jällegi on argumendid üsna iseenesestmõistetavad. Soovin postituse tüüp " book" kui " post_type". Kui seate " posts_per_page" väärtuseks -1, hangitakse kõik (avaldatud postitused, kui te ei määra post_statusargumendis " " midagi muud). Lõpuks pakun massiivi " orderby", et käskida WordPressil postitusi sortida peamiselt menüüjärjestuse järgi kasvavas järjekorras ja teiseks postituse pealkirja kahanevas järjekorras.

Näide 3: kohandatud metaandmetega postitused

Oletame, et teil on kohandatud postituse tüüp bookja soovite esitada päringu kõigi raamatute kohta, mis on avaldamata või mis on avaldatud aastatel 1990–2019.

Päringu koostamine post-meta abil on kõige parem teha meta_query(väga lihtsate metaargumentide jaoks saate kasutada meta_keyja meta_valueotse). Argument " meta_query" nõuab massiivi, kus iga argument on massiiv. Iga argumendi vahelist seost saate juhtida parameetriga " relation", mille ma ORülaltoodud näites määrasin väärtuseks " ".

Esitan kaks metaandmete argumenti " meta_query". Esimene võrdleb lihtsalt metavõtit " book_status" tekstiga " unpublished" ja kui see on võrdne, lisatakse see. Teises argumendis ütlen WordPressile, et ta hankiks metavõtmes mistahes väärtuse, year_publishedmis jääb numbrite 1990 ja 2019 vahele.

Järeldus

Nüüd peaksid teil olema põhiteadmised kahest postituste pärimise meetodist. Suurt erinevust pole, kuna saate mõlemat kasutades luua sama päringu, kuid nende kahe käsitlemise viis on erinev. Kolm esitatud päringuargumentide näidet puudutavad ainult nende päringute pinda, mida saate luua. Täieliku ülevaate saamiseks koos rohkete näidetega vaadake WP_Query dokumentatsiooni .

Kui teid huvitab, kuidas WordPressi globaalset päringut muuta, on mul selle kohta eraldi postitus.

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem