Бърза разбивка
- query_posts - не използвайте, освен в редки краища
- pre_get_posts - използвайте, ако искате да промените заявката по подразбиране на страница
- нова WP_Query - използвайте за получаване на различни резултати от основната заявка
- get_posts - същата като WP_Query, вместо това само връща резултати във формат на масив
query_posts
Използването на query_posts вече не се препоръчва. Има по-добри начини да постигнете това, което се опитвате да постигнете. Опитвате се да промените основната заявка? Използвайте действието pre_get_posts, за да филтрирате резултатите (вижте по-долу). query_posts изхвърля оригиналната главна заявка встрани (след като тя вече е стартирана) и създава нова главна заявка. Той замества всички свързани с публикуването глобални променливи и води до напълно ново повикване в базата данни. Просто няма причина да не просто променяте съществуващата заявка. Сигурен съм, че има някои крайни случаи, при които трябва да се използва, но не мога да се сетя за каквото и да било от върха на главата. Използвайте една от опциите по-долу, тъй като те повече от вероятно ще бъдат по-подходящи.
pre_get_posts
Това е филтър. Това променя основната заявка към страница. Така че, например, искаме да променим броя резултати, които се връщат на началната страница …
функция tj_change_home_number ($ заявка) {if (is_home ()) {$ query-> set ('posts_per_page', 2); се върне; }} добавяне на пренасочване ('pre_get_posts', 'tj_change_home_number');
Това ще промени основната заявка, за да върне само 2 публикации на началната страница.
WP_Query
Основната заявка във всеки извикан шаблон, е екземпляр на WP_Query . Когато взаимодействате с глобалните променливи за пост в шаблон, това е резултат от WP_Query . Случаите на използване за това са многобройни, но както при get_posts, аз бих декларирал нова WP_Query за целите на изтегляне на свързани публикации, нещо по тези линии. Трябва само да имате предвид, че ако стартирате функцията the_post (), докато циклирате през нова WP_Query, стартирайте функцията wp_reset_postdata (), след като сте направили цикъла, за да нулирате данните от глобалната публикация към първоначалната основна заявка.
get_posts
Използвайки get_posts, вие всъщност извиквате нова WP_Query и получавате тази информация върната във формат на масив. Обикновено ще използвам get_posts, когато връщам публикации за плъзгач на началната страница или се обаждам на някои свързани публикации в странична лента. WP_Query може също толкова лесно да се използва, но това е добър начин за получаване на масив от публикации без промяна на глобалните променливи на публикациите. Според мен най-опростеният и най-лесният за употреба. Не са необходими обаждания във функция след връщането на вашите данни, а само прегледайте масив.
Това може да е малко объркващо, така че не се колебайте да задавате въпроси в коментарите по-долу.
справка:
WP_Query
pre_get_posts
query_posts
get_posts
