Три способи скинути цикл в wordpress wp_reset_postdata, wp_reset_query і rewind_posts, все про

Перший з них, wp_reset_postdata (), дозволяє повернути глобальну змінну $ post до свого первісного стану в основному запиті. Тег шаблону особливо корисний при використанні з WP_Query; він дозволяє змінити висновок циклів або створити множинні цикли на одній сторінці. Виглядає він у такий спосіб:

Наскільки ви можете бачити, цей тег дуже простий у своєму застосуванні: він не приймає ніяких параметрів і не повертає ніяких значень. Він просто скидає дані записи після виконання довільного запиту. Скажімо, наприклад, що у нас є цикл WP_Query, що знаходиться в файлі header.php теми:

Цей цикл показав би випадкову запис в заголовку, але він також змінив би і об'єкт запиту для будь-яких інших циклів на сторінці. Без вихідних даних виконання основного циклу з записами, який знаходиться, скажімо, в index.php, може призвести до несподіваних результатів. На щастя, ми можемо використовувати wp_reset_postdata, щоб повернути об'єкт запиту в його початковий стан.

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

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

Wp_reset_postdata найкраще використовувати після циклів, створених за допомогою WP_Query.

Наступний тег шаблону, який ми розглянемо, це wp_reset_query (). Функція wp_reset_query дозволяє скинути запит, який використовується в довільних циклах. Ця функція, так само як і wp_reset_postdata, не приймає ніяких параметрів і не повертає ніяких значень. Вона має такий вигляд:

Якщо ми подивимося на функцію wp_reset_query в query.php, то побачимо, що вона використовує додаткову функцію wp_reset_postdata, описану вище:

Таким чином, обидві функції wp_reset_query () і wp_reset_postdata () дозволяють скинути об'єкт запиту шляхом відновлення глобальної змінної $ post, однак wp_reset_query йде трохи далі - ця функція фактично знищує попередній запит перед вчиненням покладеного на неї завдання. Приклад нижче ілюструє її використання:

Схожі статті