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

Скажем, я делаю поиск на своем сайте и получаю 50 сообщений в результате. Для разбивки на страницы установлено 10 сообщений на страницу, поэтому у меня есть 5 страниц результатов.

Когда я на первой странице результатов, если я проверяю глобальные столбцы var $posts , он дает мне данные только для 10 сообщений текущей страницы результатов.

Как я могу получить доступ к данным ВСЕХ результатов, независимо от того, на какой странице я нахожусь?

Весь механизм цикла основан на использовании фильтрованного массива $ posts. Поэтому, глядя в документации Loop на несколько циклов, он дает объяснение PHP для стандартного кода цикла, который вы используете:

  <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <!-- do stuff ... --> <?php endwhile; ?> <?php endif; ?> 

Операции has_posts () и the_post () – это удобные обертки вокруг глобального объекта $ wp_query, в котором находится все действие. $ Wp_query вызывается в заголовке блога и передается аргументы запроса через GET и PATH_INFO. $ Wp_query принимает аргументы и строит и выполняет запрос БД, который приводит к массиву сообщений. Этот массив хранится в объекте, а также возвращается обратно в заголовок блога, где он заполняется в глобальный массив $ posts (для обратной совместимости со старыми петлями post).

Has_posts () просто вызывает $ wp_query-> has_posts (), который проверяет счетчик циклов, чтобы увидеть, есть ли какие-либо сообщения, оставшиеся в столбце. И the_post () вызывает $ wp_query-> the_post (), который продвигает счетчик циклов и устанавливает глобальную переменную $ post, а также все глобальные данные post. Как только мы исчерпали цикл, has_posts () вернет false, и мы закончили.

Таким образом, глобальные сообщения $ подключаются к функции has_posts. Для правильной работы он может содержать только разбитый список сообщений. Также обратите внимание, что массив $ posts существует только для обратной совместимости, поэтому лучше не обращаться к нему напрямую.

Таким образом, похоже, вам придется либо настроить собственную разбивку на страницы, либо создать отдельный объект со всеми сообщениями.

Я бы предложил последнего.