Запит Циклу

Двигун запитів доступний для всіх елементів макета, елементів акордіона та слайдера.

Його також можна активувати для акордіона (вкладного), вкладок (вкладних) та слайдера (вкладного).

Він дозволяє вам запитувати вашу базу даних (відповідно до ваших параметрів запиту) і відображає результати запиту, які ви хочете показати всередині циклу (динамічні дані).

Ви можете запитувати типи постів, терміни таксономії та користувачів. Деякі типові випадки використання:

  • Пости: Останні пости, пов’язані пости (працює для будь-якого зареєстрованого та публічного типу поста)
  • Терміни: Категорії та теги постів, категорії продуктів тощо.
  • Користувачі: Список авторів блогу, членів спільноти та членів команди

Як створити запит циклу

Додайте елемент “Контейнер” на полотно. Увімкніть налаштування Використовувати запит циклу, щоб перетворити ваш контейнер на елемент циклу (повторювач).

Елемент контейнера: новий контроль запиту циклу

Якщо ви ввімкнули налаштування Використовувати запит циклу, ви побачите контроль Запит (значок циклу/бескінечності).

Відкрийте контроль запиту, щоб встановити параметри запиту для отримання вмісту з вашої бази даних.

Цей контейнер тепер слугує вашим елементом повторювача. Всі елементи всередині цього контейнера повторюються так часто, як є результати запиту.

Контроль запиту

Контроль Запит підтримує три різні типи об’єктів: пости, терміни та користувачі.

  • Записи забезпечують тип запиту WP_Query. Це тип запиту за замовчуванням і його слід використовувати, коли ви хочете відобразити цикл записів, сторінок, медіафайлів або власних типів записів.
  • Терміни забезпечують WP_Term_Query. Це слід використовувати, коли ви хочете пройтися по різним термінам таксономії. Корисно для того, щоб перерахувати всі категорії продуктів, які містять продукти.
  • Користувачі забезпечують WP_User_Query. Це слід використовувати, коли ви хочете пройтися по набору користувачів сайту. Корисно для перерахування авторів блога або списку членів команди (за умови, що вони вставлені як користувачі сайту).

Елементи управління запитом адаптуються відповідно до вибраного типу запиту.

Редактор запитів (PHP)

Esl 1.9.1 вводить новий Редактор запитів контроль, який дозволяє вам писати власні запити на PHP для максимальної гнучкості та можливостей запитування.

Редактор запитів з’являється після активації контролю “Редактор запитів (PHP)”.

Примітка: Вам потрібно активувати виконання коду в налаштуваннях Esl, щоб отримати доступ до цієї функції.

Користувацький запит з використанням динамічних даних (ACF) для типу запису, який повертає всі записи за вересень 2023 року.

Вам потрібно повернути масив PHP, що містить аргументи запиту WordPress, які ви хотіли б використати для вашого запиту.

Як показано на знімку екрану вище, редактор запитів підтримує динамічні дані.

Запит записів

Тип запису: Виберіть один або кілька типів записів (за замовчуванням: записи)

Сортування за: Сортування результатів за ID запису, автором, заголовком, датою публікації або зміни, кількістю коментарів, релевантністю, порядком меню або випадково (за замовчуванням: дата публікації).

Порядок: Підвищення або зменшення (за замовчуванням).

Записів на сторінку: Кількість записів, які потрібно відобразити на сторінці (за замовчуванням: налаштування WordPress → Читання → Сторінки блогу показують не більше)

Пропуск: Кількість записів, які потрібно пропустити.

Ігнорувати закріплені записи: Увімкніть це, якщо не хочете переміщувати закріплені записи на початок набору.

Вимкнути об’єднання запитів: Увімкніть цю опцію, якщо не хочете, щоб запит автоматично об’єднувався Esl на архівних сторінках, сторінках пошуку тощо. Зазвичай ви увімкнете це для запитів у підвалі, заголовку або неосновному запиті. Це графічний інтерфейс для esl/posts/merge_query фільтра.

Дитина: Встановіть ID батька, щоб повернути лише всіх його дітей. (post_parent у WP_Query)

Включити/Виключити: Якщо ви хочете включити або виключити один чи кілька постів з запиту.

Виключити поточний пост: Якщо ввімкнено, пост виключить поточний пост з циклу (корисно для створення секції “схожі пости”)

Включити/Виключити терміни: Включити або виключити пости, які мають один або кілька термінів.

Запит таксономії: Додайте один або кілька запитів таксономії для фільтрації постів.

Відносини запитів таксономії: Визначте, чи запити таксономії повинні бути включними (OR) чи виключними (AND).

Запит метаданих: Додайте один або кілька запитів метаданих для фільтрації постів на основі користувацьких полів.

Відношення: Визначте, чи запити метаданих повинні бути включними (OR) чи виключними (AND).

Часова шкала випадкового насіння TTL: Тривалість у хвилинах, протягом якої існує випадкове насіння. Налаштуйте щоб запобігти дублюванню поточних постів (потрібно тільки та доступно при використанні запиту в випадковому порядку). Встановіть “0”, щоб вимкнути цю функцію.

Якщо ви встановите TTL на 10 хвилин, результат запиту залишиться незмінним протягом наступних 10 хвилин. Це забезпечує уникнення дублювання постів на різних сторінках або коли активовано безкінечний скрол. (@since 1.7.1)

Чи є основним запитом (Архів, Пошук): При створенні архівного або пошукового шаблону виберіть один з циклів як основний запит. Це запобігає виникненню помилки 404, коли відвідувачі переходять на різні сторінки. Увімкніть для призначення основного запиту. Не забувайте також встановити правильний запит на елементі пагінації.

Однак не увімкніть цю опцію для кількох запитів на тій самій сторінці, оскільки лише перший буде встановлений як основний запит архіву. (@since 1.8)

Приклад 1: Останні пости

У цьому прикладі ми перелічимо останні чотири пости (кожен елемент показує зображення, заголовок поста та витяг) за допомогою Двигуна цілей запиту.

Відображення останніх постів за допомогою власного циклу запиту

Ми починаємо з додавання контейнера до полотна. Цей контейнер містить наш цикл і слугує шаблоном для кожного елемента запиту.

Далі ми увімкнемо налаштування “Використовувати цикл запиту”, щоб перетворити наш простий контейнер на цикл запиту.

Ми додаємо елемент зображення всередині нашого контейнера та встановлюємо його на “Описане зображення” за допомогою випадаючого списку Динамічних даних.

Додайте ще один контейнер з елементом заголовка та текстом у тому ж контейнері.

Для елемента заголовка ми додаємо {post_title} тег.

Для елемента тексту ми додаємо {post_excerpt} тег.

Ви також можете використовувати елемент заголовка поста або елемент витягу поста, якщо хочете.

За замовчуванням, елемент управління запитом показує останні пости. Але оскільки ми хочемо обмежити кількість показаних постів, нам потрібно відредагувати налаштування запиту та встановити контроль «Постів на сторінці» на 4, щоб обмежити вивід до чотирьох рядків.

Медіа запит

Esl 1.5 представляє можливість запитувати медіа файли (тип поста «додаток»). Тепер ви знайдете тип поста Media (додаток) у типі запиту постів.

Після вибору Media в контролі типу поста, ви отримаєте новий контроль для визначення типу mime. За замовчуванням, генератор Esl запитує зображення, але ви можете визначити інші типи mime (відокремлені комою, наприклад, image/jpeg,image/png,image/gif).

Щоб запитати зображення, прикріплені до поста, ви можете використовувати контроль Child of, щоб вказати ідентифікатор поста. Щоб зробити це динамічно, ви можете використовувати динамічні дані для отримання ідентифікатора поточного поста: {post_id}.

Приклад 2: Медійна галерея

Медіа запит відкриває можливість створення власної медійної галереї, використовуючи механізм Query Loop. Для початку вам потрібно додати елемент контейнера, вставити елемент блоку всередині нього, а потім—елемент зображення всередині блоку.

У контейнері ви встановите flex-wrap на wrap і напрямок на горизонтальний (ряд). У блоці ви повинні активувати Query Loop і встановити тип поста медіа та кількість зображень, які ви хочете отримати (пости на сторінку). У макеті блоку ви повинні встановити ширину та висоту (наприклад, 300px).

У зображенні ви встановите динамічні дані як {post_id} – зауважте, що запит повертає пости прикріплень (медіа файли), тому ID зображення є ID поста. Щоб завершити макет, встановіть об’єкт зображення на cover і висоту на 300px.

Остаточний результат медійної галереї з використанням механізму Query Loop

Запит продуктів WooCommerce

Оскільки 1.10, Esl представив нові налаштування для запиту продуктів WooCommerce. Після вибору типу поста «Продукти», ви зможете побачити розділ WooCommerce. (Доступний лише якщо WooCommerce активовано)

Щоб показати 10 останніх рекомендованих продуктів на вашій домашній сторінці, просто налаштуйте цикл запитів із наведеними нижче установками.

Щоб показати 4 схожі продукти на вашому шаблоні єдиного продукту.

Приклад 3: Продукти Upsells WooCommerce

Щоб показати 3 upsells продукти в шаблоні єдиного продукту.

Запит термінів

Таксономії: Виберіть одну або кілька таксономій для запиту (за замовчуванням: немає).

Сортування за: Сортуйте результати за ID терміна, назвою терміна, батьківським терміном, кількістю або списком включення.

Порядок: По зростанню (за замовчуванням) або По спаданню.

Кількість: Кількість термінів для відображення на сторінці. За замовчуванням WordPress — всі, але Esl за замовчуванням визначає кількість у налаштуваннях WordPress → Читання → Скільки сторінок блогу показувати максимум. Використовуйте 0, щоб відобразити всі результати.

Проміжок: Кількість термінів, які потрібно пропустити.

Батьківський: ID батьківського терміна, щоб отримати терміни прямих нащадків. Встановіть це на 0, щоб отримати лише терміни, які мають нащадків. Наприклад: при цій структурі введення 55 отримає лише футболки.

Нащадок: ID терміна, щоб отримати нащадків. Наприклад: при існуючій цій структурі введення 55 отримає футболки та Ті-Ширти.

Без нащадків: (bool) Істина, щоб обмежити результати термінами без нащадків. Цей параметр не має ефекту на ненаділені таксономії. За замовчуванням — неправда.

Вимкнути злиття запитів: Увімкніть це, якщо не хочете, щоб запит автоматично зливався Esl. (@since 1.7.1)

Включити/виключити терміни: Включити або виключити терміни з запиту

Показати пусті: Чи відображати терміни, які не призначені жодному запису.

Запит метаданих: Додайте один або кілька запитів метаданих, щоб фільтрувати записи на основі кастомних полів.

Відношення: Визначте, чи повинні запити метаданих бути включеними (АБО) чи виключеними (І).

Немає результатів: Текст, який відображати, коли немає збіжних результатів.

Поточний термін запису: Увімкніть, щоб отримати терміни, призначені лише для поточного запису. (@since 1.8.4) Використовуйте тільки в контексті єдиного запису. Видимий лише якщо “Тип” встановлено на “Термін”. Це та ж логіка, як у прикладі з esl/terms/query_vars

Приклад 3: Категорії продуктів

У цьому прикладі ми побудуємо динамічний список категорій продуктів (зображення категорії продукту + посилання на архів категорії).

Цей приклад оснований на плагіні WooCommerce та зразкових продуктах. Нам знадобиться один контейнер для циклу контейнера. Усередині циклу контейнера ми додали елемент базового тексту, що містить тег динамічних даних {term_name}.

Відображення категорій продуктів з посиланням

Після налаштування запиту на перебір «терміни» та вибору таксономії «Категорії продуктів» ви отримаєте на полотні стільки контейнерів, скільки існуючих категорій. Усередині циклу ви зможете використовувати кілька тегів динамічних даних для отримання даних терміна, таких як ID терміна, назва терміна, URL архіву терміна, опис терміна та будь-які метадані терміна.

У цьому прикладі ми встановили зображення фону контейнера циклу як ескіз категорії продукту, використовуючи випадаючий список динамічних даних і вибираючи тег зображення категорії продукту:

Встановіть зображення фону контейнера

Ми також налаштували контейнер циклу як посилання на сторінку архіву категорії продукту (використовуючи тег динамічних даних URL архіву терміна). Вам потрібно буде встановити HTML тег на «a (посилання)» і тип посилання на динамічні дані, що дозволить вам використовувати випадаючий список динамічних даних:

Запит користувачів

Ролі: Виберіть одну або кілька ролей користувачів для запиту (за замовчуванням: будь-яка)

Сортувати за: Сортуйте результати за ID користувача, іменем, ім’ям користувача, приємним ім’ям, входом, електронною поштою, датою реєстрації, кількістю постів або списком включення.

Порядок: Зростаючий (за замовчуванням) або спадаючий.

Число: Кількість користувачів, які слід показати на сторінці. WordPress за замовчуванням показує всіх, але Esl за замовчуванням використовує число, визначене в налаштуваннях WordPress > Читання > Сторінки блогу показують максимум. Використовуйте -1, щоб відобразити всі результати.

Зсув: Кількість користувачів, які потрібно пропустити.

Автор поточного поста: Увімкніть, щоб запитати автора поточного поста (@since 1.9.1)

Вимкнути злиття запитів: Увімкніть це, якщо ви не хочете, щоб запит автоматично зливався Esl. (@since 1.7.1)

Мета запит: Додайте один або кілька мета запитів, щоб фільтрувати пости на основі користувацьких полів.

Зв’язок: Визначте, чи мають мета запити бути інклюзивними (АБО) або ексклюзивними (І).

Немає результатів: Текст, який відображається, коли немає відповідних результатів.

Приклад 4: Автори блогу

У цьому прикладі ми хочемо створити розділ, щоб перелічити всіх авторів блогу.

Автори блогу – це користувачі сайту з роллю автора. Як і в інших прикладах, ми використали контейнер, щоб обійти користувачів. У цьому контейнері ми встановили запит типу користувача, налаштувавши ролі на «Автор», щоб отримати лише авторів сайту.

Ми додали елемент зображення та елемент основного тексту всередині контейнера циклу запиту.

Зображення, яке ми налаштували, відображає поле динамічних даних ACF, що містить зображення профілю.

У основному тексті ми використали тег динамічних даних {wp_user_display_name}.

Відображення авторів блогу

Елемент пагінації

Ідеальний супутник до двигуна кастомного циклу запитів. Ви знайдете елемент пагінації в групі WordPress панелі елементів.

Маючи пагінацію як окремий елемент, ви отримуєте найбільшу гнучкість для створення будь-якого макета.

Після додавання елемента пагінації на полотно, вам потрібно зв’язати цей елемент пагінації з одним із елементів, які виконують запит. Для цього, будь ласка, виберіть елемент у контролі Супутній запит, редагуючи елемент пагінації:

Порада: щоб спростити розпізнавання елементів, дайте описові назви елементам для контейнерів, які мають увімкнений запит.

Завантажити більше (кнопка)

Окрім безкінечного прокручування, яке генерує більше результатів при прокручуванні вниз, ви також можете надати будь-якому елементу (зазвичай кнопці) функціонал «Завантажити більше», додавши взаємодію «Завантажити більше» на нього ось так:

Цикл запитів в акордеонах та слайдерах

Елементи акордеонів та слайдери також дозволяють динамічно витягувати дані через цикл запитів, щоб заповнити частини елементів.

Ви знайдете контроль циклу запитів в елементі акордеона для налаштування запиту. Результати запиту створюють стільки ж пунктів акордеона, скільки результатів запиту.

Ви зможете налаштувати заголовок акордеона, підзаголовок і вміст «майстер» пункту акордеона, і це буде використано як шаблон для динамічних пунктів акордеона:

Використовуйте цикл запитів в елементі аккордеону

Те саме відбувається в елементі слайдера. Якщо Цикл запитів увімкнено, ви матимете доступ до контролю запитів та елемента слайда, який буде діяти як шаблон для всіх слайдів.

Використовуйте цикл запитів в елементі слайдера.

Гачки циклу запитів