Цикл WordPress

512

Від автора: в обговореннях WP і, зокрема, в розмовах з розробки тем (або при створенні нових шаблонів сторінок в темі) ви неминуче зіткнетеся з поняттям «цикл WordPress». Цикл (loop) – це фреймворк, всередині якого WP будує контент для сторінок, на які заходить користувач. Будь-то статична домашня сторінка або сторінка останніх постів у блозі, чи щось інше. Можливо, звучить складно, але насправді це просто механізм зациклення.

У найпростішому випадку цикл – це зациклена структура, як і будь-яка інша структура в програмуванні. Вона проходиться по контенту на сайті, циклічно переміщаючись по постів і сторінок, і витягає запитаний контент. В самому складному випадку цикл можна запускати декілька разів, вибираючи тільки певні елементи з заданих категорій, елементи, що не належать до визначених категорій, опубліковані у межах дат, а також елементи, ідентифіковані за іншими ознаками.

У всіх шаблонах тим для WP є цикл. Це один із способів, за допомогою якого шаблон може шукати і витягувати вміст сторінок і постів, які зберігаються в базі даних. Розберемо кілька прикладів:

Базовий приклад циклу

У прикладі вище видно, що налаштування дуже проста. Все починається з умови наявності постів have_posts. Далі слід цикл while, що задає умову. Поки є пости (знову з допомогою have_posts), проходимся в циклі з наступного посту і викликаємо the_post – конкретний пост.

Конкретні запити

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

Фільтрація за категоріями

Приклад нижче – модифікована версія коду з Codex, в якому ми запитуємо пости з категорії з id, рівним 4. Далі можна подивитися зразок вмісту самого циклу. Ми шукаємо пости з категорії ID 4, div .post відображаємо заголовок поста (з посиланням на посаду), дату, контент і метадані посту.

4 ) ); ?>
have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post(); ?>

}
}

З допомогою WP_Query можна налаштовувати результат. Можна включити посади лише з однієї категорії або декількох, або включити всі пости крім певної категорії або кількох. Можна шукати і повертати пости за ключовими словами, знаходити пости по ID, показувати тільки дані зі сторінок з допомогою post_type і т. д. Більш докладно з WP_Query можна ознайомитися в документації WP_Query.

«Порада: отримати ID категорії можна різними способами. Простий – перейти в «Posts» і далі в «Categories» в WP-Admin, натиснути праву кнопку миші на імені категорії зі списку і зберегти URL. Далі необхідно вставити посилання в текстовий редактор. Посилання буде виглядати приблизно так: http://example.com/wp-admin/term.php?taxonomy=category&tag_ID=4&post_type=post&wp_http_referer=%2Fwp-admin%2Fedit-tags.php%3Ftaxonomy%3Dcategory. Нам потрібен tag_ID!»

Фільтрація за значеннями полів

Користувальницькі поля в WP можуть бути дуже корисними, і час від часу вам, можливо, знадобиться фільтрувати посади значень цих полів. Проста задача, але її треба показати новачкам у розробці WP (і тим, хто не заглиблювався в кастомні шаблони і цикли), щоб зрозуміти масштаб налаштувань. Скажімо, у вас є настроюване поле department, і ви шукайте пости за значенням marketing:

$query = new WP_Query( array(‘meta_key’ => ‘department’, ‘meta_value’ => ‘marketing’) );

Поняття циклу

Найкращий спосіб зрозуміти цикл – використовувати його. Витягайте з його допомогою контент з шаблонів, які ви створюєте для тих, або використовувати його в коді існуючих шаблонів тим. Якщо треба щось зробити, відфільтрувати за певними критеріями, знову запускайте цикл. Перегляньте документацію The Loop у Codex або шукайте ідеї в Google. Обмежень немає!