Hitro razčlenitev
- query_posts - ne uporabljajte, razen v redkih robovih
- pre_get_posts - uporabite, če želite spremeniti privzeto poizvedbo na strani
- nova WP_Query - uporabite za pridobitev drugačnih rezultatov od glavne poizvedbe
- get_posts - enako kot WP_Query, namesto tega vrne rezultate v obliki matrike
query_posts
Uporaba query_posts ne priporočamo več. Obstajajo boljši načini, kako doseči tisto, kar poskušate doseči. Želite spremeniti glavno poizvedbo? Za filtriranje rezultatov uporabite dejanje pre_get_posts (glejte spodaj). query_posts vrne prvotno glavno poizvedbo na stran (potem ko je že zagnana) in ustvari novo glavno poizvedbo. Nadomešča vse globalne spremenljivke, povezane z objavo, in ima za posledico popolnoma nov klic iz baze podatkov. Preprosto ni razloga, da ne bi samo spreminjali obstoječe poizvedbe. Prepričan sem, da obstajajo nekateri robni primeri, pri katerih bi ga bilo treba uporabiti, toda na vrh glave si ne morem misliti. Uporabite eno od spodnjih možnosti, saj bodo verjetno boljše.
pre_get_posts
To je filter. To spremeni glavno poizvedbo strani. Torej, na primer, želimo spremeniti število rezultatov, ki se vrnejo na domačo stran …
funkcija tj_change_home_number ($ poizvedba) {if (is_home ()) {$ query-> set ('posts_per_page', 2); vrnitev; }} dodajanje ('pre_get_posts', 'tj_change_home_number');
S tem bi glavna poizvedba spremenila le dve objavi na domači strani.
WP_Query
Glavna poizvedba v kateri koli klicani predlogi je primerek WP_Query . Ko komunicirate s spremenljivkami globalnih objav znotraj predloge, je to rezultat WP_Query . Primerov uporabe za to je veliko, a kot pri get_posts, bi tudi jaz razglasil novo WP_Query za vlečenje povezanih objav, nekaj v tem smislu. Upoštevajte, da če zaženete funkcijo the_post () med cikkanjem po novi WP_Query, zaženite funkcijo wp_reset_postdata (), potem ko končate z zanko, da podatke globalne objave ponastavite na prvotno glavno poizvedbo.
get_posts
Z uporabo get_posts dejansko pokličete novo WP_Query in vrnete te podatke v obliki matrike. Običajno bom uporabljal get_posts, ko na domačo stran vračam objave za drsnik ali kličem nekatere povezane objave v stranski vrstici. WP_Query bi bilo prav tako enostavno uporabiti, vendar je to dober način za prejem niza objav brez spreminjanja globalnih spremenljivk objav. Po mojem mnenju je najbolj preprost in najlažji za uporabo. Po vrnitvi podatkov ni potrebnih nobenih funkcijskih klicev, temveč samo iskanje v matriki.
To je lahko nekoliko zmedeno, zato vas prosimo, da vprašanja postavite v spodnjih komentarjih.
Referenca:
WP_Query
pre_get_posts
query_posts
get_posts
