Задать вопрос
@karpo518

Как избежать использования функции the_post() в шаблоне архива?

По коду ядра я вижу, что Wordpress предварительно получает записи для категорий и тегов через функцию get_posts, а затем в шаблоне запрашивает их из массива по очереди с помощью функции the_post. В силу некоторых особенностей работы конкретного сайта каждый вызов the_post приводит к дополнительному запросу в БД. При запросе любых списков постов это обстоятельство приводит к значительному увеличению нагрузки на сервер. Соответственно, я хотел бы избавиться от этой функции во всех шаблонах вывода превью постов.

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

Имея доступ к этому массиву, я мог бы заменить цикл while(have_posts()){the_post()} на цикл foreach($my_posts as $my_post). Я бы мог использовать функцию get_posts, но это будет уже дубль основного запроса.
  • Вопрос задан
  • 61 просмотр
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@karpo518 Автор вопроса
Для себя решил проблему так:
global $wp_query;
$my_posts = $wp_query->posts;
<?php foreach ( $my_posts as $my_post) {?>
// Вывод превью постов
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы