Anonim

Brzi kvar

  • query_posts - ne koristite osim u rijetkim rubnim slučajevima
  • pre_get_posts - koristite ako želite promijeniti zadani upit na stranici
  • novi WP_Query - koristite za dobivanje različitih rezultata od glavnog upita
  • get_posts - isto kao WP_Query, umjesto toga samo vraća rezultate u formatu polja
  • query_posts

    Korištenje query_posts više se ne preporučuje. Postoje bolji načini da postignete ono što pokušavate postići. Pokušavate promijeniti glavni upit? Za filtriranje rezultata upotrijebite akciju pre_get_posts (vidi dolje). query_posts baca izvorni glavni upit u stranu (nakon što je već pokrenut) i stvara novi glavni upit. Zamjenjuje sve globalne varijable povezane s postovima i rezultira potpuno novim pozivom iz baze podataka. Jednostavno nema razloga da ne biste samo trebali mijenjati postojeći upit. Siguran sam da postoje neki rubni slučajevi u kojima bi ga trebao koristiti, ali ne mogu se sjetiti ni s vrha glave. Upotrijebite jednu od nižih opcija jer će one više nego vjerojatno biti prikladnije.

    pre_get_posts

    Ovo je filter. Ovo mijenja glavni upit za stranicu. Tako, na primjer, želimo promijeniti broj rezultata koji se vraćaju na početnu stranicu …

funkcija tj_change_home_number ($ upit) {if (is_home ()) {$ query-> set ('posts_per_page', 2); povratak; }} dodavanje prijenosa ('pre_get_posts', 'tj_change_home_number');

Ovo bi promijenilo glavni upit tako da se na početnoj stranici vraćaju samo 2 postova.

WP_Query

Glavni upit na bilo koji pozvani predložak je instanca WP_Query . Kad komunicirate s globalnim varijablama posta unutar predloška, ​​to je rezultat WP_Query . Slučajevi upotrebe za ovo su brojni, ali kao i kod get_posts, deklarirao bih novi WP_Query za potrebe povlačenja povezanih postova, nešto u skladu s tim. Samo imajte na umu da ako pokrenete funkciju the_post () dok petljate kroz novi WP_Query, pokrenite funkciju wp_reset_postdata () nakon što završite petlje i resetirate globalne podatke posta na izvorne glavne upite.

get_posts

Upotrebom get_posts, vi nazovite novi WP_Query i vraćate te podatke u formatu polja. Obično ću koristiti get_posts kad vraćam postove za klizač na početnoj stranici ili pozivam neke povezane postove na bočnoj traci. WP_Query se jednako lako može koristiti, ali to je dobar način za primanje niza postova bez izmjene globalnih varijabli posta. Po mom mišljenju njegov je najjednostavniji i najlakši za upotrebu. Nakon vraćanja podataka nisu potrebni pozivi funkcija, već se petljaju kroz niz.

To može biti malo zbunjujuće, pa slobodno postavljajte pitanja u komentarima ispod.

Referenca:
WP_Query
pre_get_posts
query_posts
get_posts

Wp_query vs query_posts vs get_posts vs pre_get_posts