Intereting Posts
Почему «get_option» тянет более старое значение в options.php, а не более новое значение, при подаче формы? Список сообщений WordPress и связанных с ними вложений за пределами почтовой страницы Как удалить «admin.php? Page =» из wp-admin с помощью .htaccess? Измените метки на «Псевдоним» и «Биографическая информация» в user-edit.php Можно ли управлять шириной звукового проигрывателя WordPress? Передача переменных через структуру контировки Глобальные функции на WPMU WordPress Frontend Post Form (Bootstrap Modal) Не создает сообщение Как добавить настройки на страницу параметров фона? требуется один тег для каждого сообщения Функция подсчета слов Предотвращение редактирования Permalink Отображать только сообщения из указанной категории на странице архива даты Shortcode добавляет p и br теги Исключить идентификатор сообщения из wp_query Как отобразить цену, включая налог с форматированием?

Требуется разъяснение query_posts

Я понимаю, что делает query_posts и как он работает. Я также знаю, что использовать его не рекомендуется. Но я хотел бы точно знать, что переменная «$ posts» делает в этой настройке:

<?php global $query_string; $posts = query_posts($query_string.'&cat=-9'); if (have_posts()) : while (have_posts()) : the_post(); ... endwhile; else: ... endif; wp_reset_query(); // reset the query ?> 

Может кто-нибудь объяснить, как «$ posts» используется в цикле? спасибо

Solutions Collecting From Web of "Требуется разъяснение query_posts"

Может кто-нибудь объяснить, как «$ posts» используется в цикле?

Это не так.

Он возвращает массив запрошенных сообщений, но он незначителен и не используется вообще: если вы его удалите, чем код работает одинаково:

 global $query_string; query_posts($query_string.'&cat=-9'); if (have_posts()) : while (have_posts()) : the_post(); ... endwhile; endif; 

Это связано с тем, что query_posts() переопределяет глобальный объект $wp_query , то есть тот же объект запроса, который использует have_posts() такие как have_posts() и the_post() для отображения сообщений.

и именно по этой причине эту функцию нельзя использовать:

  • переопределяя широко используемую глобальную переменную, он легко имеет побочные эффекты
  • он очень медленный, потому что вы переопределяете уже запущенный запрос с другим, выполняя запрос к базе данных 2 раза.

Если вам нужен отдельный запрос из основного (глобального) запроса, чем нет смысла переопределять основной запрос, просто выполните вторичный запрос, используя объект get_posts или get_posts .

Если вам нужно изменить основной запрос, чем изменить его до его запуска, таким образом вы будете запускать только 1 запрос вместо 2, и ваш код будет быстрее. Чтобы изменить основной запрос перед его 'pre_get_posts' , используйте 'pre_get_posts' действия 'pre_get_posts' .