Anonim

Швидка поломка

  • query_posts - не використовуйте, за винятком випадків рідкісного краю
  • pre_get_posts - використовуйте, якщо ви хочете змінити запит за замовчуванням на сторінці
  • новий WP_Query - використовуйте для отримання різних результатів від основного запиту
  • get_posts - те саме, що і WP_Query, просто повертає результати у форматі масиву
  • query_posts

    Використання query_posts більше не рекомендується. Є кращі способи досягти того, що ви намагаєтеся досягти. Намагаєтесь змінити основний запит? Використовуйте дію pre_get_posts для фільтрування результатів (див. Нижче). query_posts відкидає оригінальний головний запит у бік (після його запуску) та створює новий головний запит. Він замінює всі глобальні змінні, пов’язані з публікацією, і призводить до абсолютно нового виклику бази даних. Просто немає причини, що ви не повинні просто змінювати існуючий запит. Я впевнений, що є деякі крайні випадки, коли це слід використовувати, але я не можу придумати жодного верхнього місця. Скористайтеся одним із наведених нижче варіантів, оскільки вони, швидше за все, краще підходять.

    pre_get_posts

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

функція tj_change_home_number ($ запит) {if (is_home ()) {$ query-> set ('posts_per_page', 2); повернення; }} додати запуск ('pre_get_posts', 'tj_change_home_number');

Це змінило б основний запит на повернення лише 2 повідомлень на домашній сторінці.

WP_Query

Основний запит на будь-який викликаний шаблон - це екземпляр WP_Query . Коли ви взаємодієте зі змінними глобальної публікації у шаблоні, це результат WP_Query . Випадків використання для цього чимало, але як і у get_posts, я оголошу новий WP_Query для того, щоб тягнути пов’язані пости, щось у цьому напрямку. Просто майте на увазі, що якщо ви запускаєте функцію the_post () під час циклу через новий WP_Query, запустіть функцію wp_reset_postdata () після завершення циклу, щоб скинути дані глобальної публікації до початкового основного запиту.

get_posts

Використовуючи get_posts, ви фактично викликаєте новий WP_Query і повертаєте цю інформацію у форматі масиву. Зазвичай я буду використовувати get_posts, коли я повертаю повідомлення для слайдера на домашній сторінці або дзвоню деякі пов’язані повідомлення на бічній панелі. WP_Query так само легко можна використовувати, але це хороший спосіб отримувати масив постів без зміни глобальних змінних публікацій. На мій погляд, це найпростіший і найпростіший у використанні. Немає необхідних викликів функцій після повернення даних, просто перебираючи масив.

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

Довідка:
WP_Query
pre_get_posts
query_posts
get_posts

Wp_query vs query_posts vs get_posts vs pre_get_posts