При розробці сайтів на WordPress, майже завжди потрібно показувати колекції сторінок, наприклад, записи з блогу або список новин. Найчастіше це досить складна вибірка, певних типів записів за набором умов. Зробити таку вибірку можна скориставшись функціями query_posts(), get_posts() або класом WP_Query.

Дані методи можна зустріти в документаціях і блогах упереміш. Але питання в тому, коли і де краще використовувати query_posts(), get_posts() та WP_Query. На це запитання спробую відповісти нижче.

query_posts()

Використання query_posts() дуже часто можна зустріти у старих WordPress темах та посібниках. Це дуже примітивний та проблемний спосіб вивести потрібні вам дані. Він знову запускає деякі SQL запити, що призводить до додаткового навантаження на веб-сервер і уповільнить роботу сайту.

Головна проблема query_posts() полягає в тому, що ця функція «ламає» основний об’єкт запиту, що може призвести, наприклад, до неправильної роботи плагінів, які його використовують і точно призведе до неправильної роботи по сторінці розбивки.

Однією пропозицією ви ніколи не повинні використовувати query_posts() у своєму коді.

get_posts()

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

WP_Query

WP_Query це клас, який використовується для головного запиту і його екземпляр можна використовувати у своєму коді.

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

Резюмуючи вищесказане, створюючи свою тему для WordPress, query_posts() не варто використовувати ніколи і ніде, get_posts() і WP_Query можна рівноцінно використовувати за потреби в будь-якому місці, що саме справа смаку.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься.