Я думаю, что теперь я понимаю, что вы пытаетесь сделать. Когда вы запускаете пользовательский запрос с помощью WP_Query
и устанавливаете лимит для получения только 5 сообщений на страницу, запрос будет получать только 5 сообщений, и этот запрос будет содержать только 5 сообщений, НО для разбивки на страницы, он по- WP_Query
прежнему будет проходить через всю базу данных. и подсчитывает все сообщения, которые соответствуют критериям запроса.
Это можно увидеть , когда вы смотрите на $found_posts
и $max_num_pages
свойства запроса. Давайте возьмем пример:
У вас есть 20 сообщений, относящихся к типу сообщений по умолчанию post
. Вам нужны только последние 5 постов без нумерации страниц. Ваш запрос выглядит так
$q = new WP_Query( 'posts_per_page=5' );
var_dump( $q->posts )
даст вам последние 5 сообщений, как ожидалось
echo $q->found_posts
дам тебе 20
echo $q->max_num_pages
дам тебе 4
Влияние этой дополнительной работы минимально на сайтах с несколькими постами, но это может стать дорогостоящим, если вы используете сайт с сотнями или тысячами постов. Это пустая трата ресурсов, если вам когда-нибудь понадобятся только 5 последних сообщений
Существует недокументированный параметр, no_found_rows
который называется булевыми значениями, которые можно использовать, чтобы сделать запрос под залог после того, как он найдет 5 нужных вам сообщений. Это заставит больше WP_Query
не искать сообщения, отвечающие критериям после того, как будет получено количество запрошенных сообщений. Этот параметр уже Встраиваемый get_posts
, поэтому get_posts
немного быстрее , WP_Query
хотя get_posts
использованиеWP_Query
Вывод
В заключение, если вы не собираетесь использовать разбиение на страницы в запросе, всегда целесообразно 'no_found_rows=true'
в своем запросе ускорить процесс и сэкономить на растрате ресурсов.
'posts_per_page=5'