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

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

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

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

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

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

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