Почему query_posts нарушает нумерацию страниц | Rarst.net
Моя диаграмма различий между функциями запросов WP — один из самых популярных материалов, которые я делал. Но ни он, ни график загрузки ядра не покрывают, почему именно query_posts
ломают пагинацию.
Этот пост расскажет об этой проблеме и о том, почему вы никогда не должны перезаписывать основной запрос в файле шаблона.
Основной запрос
Рассмотрим базовый пример. У вас есть блог с шестью сообщениями.
- Что происходит на домашней странице?
- Что происходит на следующей странице?
Опуская некоторые детали, процесс выглядит следующим образом:
- WordPress обрабатывает URL-адрес.
- Затем выполняется основной запрос (глобальный
экземпляр $wp_query
). - Загрузчик шаблонов использует условные теги (которые зависят от основного запроса) для поиска и загрузки шаблона темы.
Основной запрос.
На второй странице основной запрос переходит ко второму набору сообщений, и происходит тот же процесс.
Основной запрос с помощью query_posts()
Вы заметили, что вам не нравится одинокий шестой пост на второй странице. Вы решаете, что было бы более аккуратно иметь три страницы по два поста на каждой. Для этого вы бросаете вызов query_posts()
в свой шаблон. Он переопределяет основной запрос только для двух сообщений.
Как это меняет процесс?
Сначала все выглядит одинаково. Выполняется основной запрос, загрузчик шаблонов выбирает шаблон, который запускается с вашими изменениями.
Но только до точки:
- на первой странице ваш шаблон отбрасывает сообщения 1–5 и вместо этого запрашивает 1–2;
- на второй странице ваш шаблон отбрасывает пост 6 и запросы 3-4;
- на третьей странице… Все ломается! Вы получаете ошибку 404 вместо постов 5-6!
Что только что произошло? Обратите внимание, как ваш вызов query_posts()
находится в вашем шаблоне, и загрузчик шаблона загружает его.
Основной запрос не знает, что находится в вашем шаблоне , и из-за этого не знает загрузчик шаблонов. Когда дело доходит до поиска третьей страницы постов — их не хватает с количеством по умолчанию на странице.
Основной запрос, в котором query_posts нарушает нумерацию страниц.
Поскольку вы вносили свои изменения только внутри шаблона, у него нет возможности вовремя сообщить о них основному запросу!
В результате, когда вы запрашиваете URL-адрес, который основной запрос считает недопустимым, именно так он и обрабатывает его.
Прекратить использование query_posts()
Никогда не использовать query_posts()
или иным образом переопределять основной запрос в шаблоне.
Ваш шаблон зависит от загрузчика шаблонов, который зависит от исходного основного запроса.
Поскольку шаблон запускается в конце процесса загрузки, вы не можете вносить изменения в основной запрос внутри него! Если это так, query_posts
ломает нумерацию страниц и будет продолжать это делать!
Любое изменение основного запроса должно быть сделано задолго до шаблона. Вы можете сделать это с помощью хука pre_get_posts
.
Похожие сообщения
- Разбираемся в функциях запросов WordPress
- Асимметричные циклы WordPress
- Разобраться с нагрузкой ядра WordPress
- Разберитесь с выдержками и тизерами WordPress
- Редактор диаграмм изображений Google для Chart API
Как добавить монитор запросов WordPress на свой сайт
Последнее обновление от редакции | Раскрытие информации для читателей Раскрытие информации: Наш контент поддерживается читателями. Это означает, что если вы нажмете на некоторые из наших ссылок, мы можем получить комиссию. Узнайте, как финансируется WPBeginner, почему это важно и как вы можете нас поддержать.
акции 106 Делиться Твитнуть Делиться Facebook-мессенджер WhatsApp Эл. адрес
Хотите добавить монитор запросов WordPress на свой сайт?
Монитор запросов позволяет вам заглянуть за кулисы вашего сайта WordPress, чтобы вы могли устранять проблемы с производительностью, как профессионал.
В этой статье мы покажем вам, как добавить монитор запросов WordPress на ваш сайт.
Что такое монитор запросов WordPress?
Монитор запросов WordPress — это инструмент отладки, который отслеживает запросы, которые ваш веб-сайт WordPress отправляет на сервер.
Затем вы можете использовать эту информацию для устранения проблем с WordPress или поиска и исправления распространенных ошибок WordPress.
Некоторые из вещей, которые вы можете найти:
- Запросы к базе данных, инициированные страницей в WordPress
- HTTP-запросы, сделанные сценариями в ваших темах или плагинах
- Хуки и действия, инициированные на странице
- Язык, роль пользователя проверки и файлы шаблонов, используемые для отображения страницы
- Среда вашего хостинга, такая как версии PHP и MySQL, ограничения памяти и т. д.
При этом давайте посмотрим, как добавить монитор запросов на ваш сайт WordPress.
Добавление Query Monitor в WordPress
Первое, что вам нужно сделать, это установить и активировать плагин Query Monitor. Для получения более подробной информации см. наше пошаговое руководство по установке плагина WordPress.
После активации плагин добавит меню монитора запросов в панель администратора WordPress.
При наведении указателя мыши на монитор запросов отображается меню, позволяющее быстро перейти к параметру. Вы также можете нажать на статистику монитора запросов, чтобы просмотреть все данные.
Просмотр данных в мониторе запросов WordPress
Во-первых, вам нужно убедиться, что панель администратора WordPress видна, когда вы просматриваете свой веб-сайт. Просто перейдите на страницу
Не забудьте нажать кнопку «Обновить профиль», чтобы сохранить настройки.
Далее вам нужно посетить страницу, для которой вы хотите проверить запросы. Оказавшись на этой странице, просто наведите указатель мыши на меню монитора запросов в панели администратора и щелкните раздел, который хотите просмотреть.
Мониторинг SQL-запросов
Плагин Query Monitor позволяет отслеживать все SQL-запросы, запросы по вызывающей стороне и запросы по компонентам. Раздел запросов по компонентам показывает запросы, сделанные плагинами, темами и основными файлами.
Правила и шаблоны перезаписи
В этом разделе плагина показаны соответствующие правила перезаписи и шаблоны, используемые для отображения текущей страницы.
Скрипты и стили
В разделе «Скрипты и стили» показаны JavaScript и таблицы стилей, загруженные вашей темой и плагинами. Вы также увидите, где загружаются эти файлы, например, в шапке или футере.
Перехватчики и действия
Раздел языков
В этом разделе показаны языковые файлы, запрошенные и загруженные текущей страницей. Если вы запускаете многоязычный сайт WordPress, это поможет вам выяснить, какие темы и плагины имеют доступные языковые файлы.
Вызовы HTTP API
В этом разделе отображаются вызовы HTTP API к сторонним библиотекам API.
Временные обновления
Раздел «Проверки возможностей»
В разделе «Проверки возможностей» отображается проверка возможностей роли пользователя, выполняемая ядром WordPress, плагинами и темами при загрузке текущей страницы.
Отдел окружающей среды
Здесь вы получите информацию о среде хостинга WordPress, такую как версия PHP, версия MySQL, хост MySQL, имя базы данных WordPress и многое другое.
Проверка условий