При создании цикла с помощью WP_Query в WordPress, он создает переменную объект со всеми статьями из базы данных?

12
Dmitriy_2014
На сайте с 01.07.2014
Offline
344
333

Всем привет!

Подскажите если кто знает или правильно ли я понял, что при создании кастумного вывода цикла статей с помощью WP_Query он в переменную записывает все статьи, которые есть в базе?

$query = new WP_Query;

Var_dump и printr выводит какую-то галиматью в которой тяжело разобраться, но вот если поставить в аргументах posts_per_page=-1 он вывел все статьи которые есть на сайте, хотя там в аргументах было указано только по количеству комментариев.

Так что получается, что при использовании $query = new WP_Query; в переменной $query хранятся по сути все статьи, и не важно какое количество ты собираешься выводить posts_per_page, и не важно с комментариями ли они или без - orderby=comment_count, все статьи не зависимо от запроса будут храниться в этой переменной, а потом уже сколько ты там хочешь вывести, по количеству комментариев и т.д., и т.п.

Короче получается в переменной $query при создании нового объекта с помощью класса WP_query хранятся все посты, которые есть на сайте?

Заранее всем спасибо за ответы!


W1
На сайте с 22.01.2021
Offline
306
#1
Dmitriy_2014 :
Var_dump и printr выводит какую-то галиматью в которой тяжело разобраться

Изучай основы ООП, и разберёшься.

Dmitriy_2014 :
получается, что при использовании $query = new WP_Query; в переменной $query хранятся по сути все статьи

Нет, не получается. Ничего там не хранится.

Мой форум - https://webinfo.guru –Там я всегда на связи
Dmitriy_2014
На сайте с 01.07.2014
Offline
344
#2
webinfo #:

Изучай основы ООП, и разберёшься.

Нет, не получается. Ничего там не хранится.

WP_Query

Выбирает записи из базы данных по указанным критериям.

Правда про указанным критериям у меня есть сомнения,

мне бы просто узнать все ли там статьи или нет,

я подозреваю что все, т.к. если включить пагинацию то независимо от  posts_per_page какой ты там указал, выведет все статьи постранично

Dmitriy_2014
На сайте с 01.07.2014
Offline
344
#3

Echo $query->found_posts; - вернул точную цифру в виде суммы количества всех постов, а ты говоришь ничего нету, вот тебе и ООП, все там вся инфа о всех постах 100%.

Все правильно я понимаю!
W1
На сайте с 22.01.2021
Offline
306
#4
Dmitriy_2014 #:
Все правильно я понимаю!

Нихрена ты не понимаешь. Ты совершил запрос к базе данных с помощью метода класса, и получил штатный результат.
А не вот это:

Dmitriy_2014 :
при использовании $query = new WP_Query; в переменной $query хранятся по сути все статьи
totamon
На сайте с 12.05.2007
Offline
437
#5
Dmitriy_2014 :
хотя там в аргументах было указано только по количеству комментариев.
при чем тут количество комментариев? приведи весь код каким ты пытаешься выводить и проверять, пока не понятно с чего ты вообще взял что " что при создании кастумного вывода цикла статей с помощью WP_Query он в переменную записывает все статьи, которые есть в базе "? он записывает то количество какое указано в параметре отвечающем за количество.
Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
S3
На сайте с 29.03.2012
Offline
349
#6

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

WP_Query - это класс, который принимает определенные параметры и на основании их создает запрос в базу данных. А вот уже после выполнения этого запроса создается экземпляр(обьект) класса, переменная - неправильное слово, в котором содержаться все результаты запроса. И дальше ты можешь обрабатывать их в цикле как тебе нравится. А встроенные методы класса дают определенную информацию, например о количестве постов, тайтлы и проч.

В документации все это хорошо расписано, просто потрать 5 минут времени чтоб прочитать - https://developer.wordpress.org/reference/classes/wp_query/

WP_Query | Class | WordPress Developer Resources
  • developer.wordpress.org
The WordPress Query class.
D
На сайте с 02.02.2010
Offline
143
#7
 $query->found_posts;

Если не нужна пагинация и информация об общем количестве записей по запросу, то это можно отключить

no_found_rows = true

тогда и запрос будет быстрее выполнятся.

Параметр posts_per_page - ограничивает количество постов в запросе, сколько укажите, столько и будет.

posts_per_page = -1 - выводит все посты

Dmitriy_2014
На сайте с 01.07.2014
Offline
344
#8

Да, да извиняюсь, точно это класс, на основе его объект у того свойства/методы, НО это все мне не важно :), мне важно, что речь идет о всех статьях, а не о пяти, одной, ста и т.д.

Вы делаете выборку posts_per_page=5, пять статей, но на самом деле это просто он показывает пять статей, но как только добавляется пагинация, то там все статьи.

Когда вы делаете выборку по количеству комментариев orderby=comment_count, если добавите пагинацию, то тоже увидите все свои статьи, которые есть на вашем сайте + даже те у которых 0 комментариев.

Пусть это будет объект, пусть это будет не переменная, пусть там какие-то методы подключаются и делают выборку, но по факту речь идет о всех статьях, а не об одной.

Не обижайтесь на меня, я ведь не программист я иногда даже не понимаю, что там происходит.
totamon
На сайте с 12.05.2007
Offline
437
#9
Dmitriy_2014 #:
но как только добавляется пагинация, то там все статьи.
нет там всех статей, это просто не работало бы... есть сайты с миллионами статей и никаких ресурсов не хватило бы для работы
Dmitriy_2014
На сайте с 01.07.2014
Offline
344
#10
totamon #:
нет там всех статей, это просто не работало бы... есть сайты с миллионами статей и никаких ресурсов не хватило бы для работы

Если задать параметр минус один, -1, в posts_per_page=-1, то выведутся все статьи, которые есть на сайте, это проверено, не знаю может он и не хранит их в созданной переменной, может она превращается в объект и его методы в моменте вытаскивают их из базы, ок, даже так, но речь идет о всех статьях. Он выведет хоть миллион статей, если браузер и сервак не повиснет, при чуть больше 2К статей чувствуется запинка при выводе. Я просто думал он все в переменную кладет $query, а потом с помощью цикла while вы вытаскиваете данные которые вам нужны заголовки, контент, миниатюру и т.п. Не судите строго я сам не знаю, как оно работает :), мне лишь было важно, что при добавлении пагинации выводятся все статьи какие там бы небыли запросы и то это все не точно.

И самый загадочный вопрос для меня если в ней ничего нет, то что в ней есть, и что выводит цикл while из неё…
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий