Anonim

Rychlé rozdělení

  • query_posts - nepoužívejte, s výjimkou výjimečných okrajových případů
  • pre_get_posts - použijte, pokud chcete změnit výchozí dotaz na stránce
  • new WP_Query - slouží k získání různých výsledků z hlavního dotazu
  • get_posts - stejně jako WP_Query, pouze vrací výsledky ve formátu pole
  • query_posts

    Použití query_posts se již nedoporučuje. Existují lepší způsoby, jak dosáhnout toho, co se snažíte dosáhnout. Pokoušíte se změnit hlavní dotaz? Výsledky filtrujte pomocí akce pre_get_posts (viz níže). query_posts vyvolá původní hlavní dotaz na stranu (poté, co již byl spuštěn) a vytvoří nový hlavní dotaz. Nahrazuje všechny globální související proměnné související s výsledkem a má za následek zcela nové volání databáze. Neexistuje prostě žádný důvod, proč byste neměli pouze změnit existující dotaz. Jsem si jistý, že existují případy, kdy by se měl použít, ale nemůžu myslet na nic z hlavy. Použijte jednu z níže uvedených možností, protože budou pravděpodobně lépe vyhovovat.

    pre_get_posts

    Toto je filtr. Tím se upraví hlavní dotaz na stránku. Chceme například změnit počet výsledků, které se vracejí na domovskou stránku …

funkce tj_change_home_number ($ query) {if (is_home ()) {$ query-> set ('posts_per_page', 2); vrátit se; }} add_action ('pre_get_posts', 'tj_change_home_number');

To by změnilo hlavní dotaz tak, aby na domovskou stránku vrátil pouze 2 příspěvky.

WP_Query

Hlavním dotazem na libovolnou šablonu, která se nazývá, je instance WP_Query . Pokud interagujete s globálními proměnnými post v rámci šablony, je to výsledek WP_Query . Případy použití jsou četné, ale stejně jako u get_posts bych prohlásil nový WP_Query za účelem tahání souvisejících příspěvků, něco podél těchto linií. Jen mějte na paměti, že pokud spustíte funkci the_post () při opakování smyčky prostřednictvím nového WP_Query, spusťte funkci wp_reset_postdata () poté, co jste dokončili opakování, abyste resetovali globální post data na původní hlavní dotaz.

get_posts

Pomocí get_posts ve skutečnosti voláte nový WP_Query a získáváte tyto informace ve formátu matice. Obvykle použiji get_posts, když vracím příspěvky pro posuvník na domovské stránce nebo zavolám některé související příspěvky v postranním panelu. WP_Query lze stejně snadno použít, ale je to dobrý způsob, jak přijímat řadu příspěvků bez úpravy globálních post proměnných. Podle mého názoru je to nejjednodušší a nejjednodušší použití. Po vrácení dat nejsou nutná žádná volání funkcí, pouze opakování v poli.

To může být trochu matoucí, takže neváhejte klást otázky v komentářích níže.

Odkaz:
WP_Query
pre_get_posts
query_posts
get_posts

Wp_query vs query_posts vs get_posts vs pre_get_posts