
Використання запитів WP_Query у WordPress — частина 5 (методи та властивості)
Продовжуємо серію уроків по роботі з запитами до бази даних WP_Query у ВордПрес. Сьогоднішній урок присвячений методам та властивостям, що пов’язані з класом WP_Query.
До цього ми вже познайомилися зі спеціальними функціями, додатковими хуками та фільтрами. А зараз перейдемо до розгляду наступного щаблю — властивості та методи класу, і почнемо з основ.
Що таке методи та властивості — узагальнене визначення
У мові програмування PHP є чудовий спосіб організації коду — ООП (об’єктно-орієнтоване програмування), коли ми використовуємо класи, що по своїй суті можна порівняти із проектом (генеральним кресленням) будинку. Класи визначають основні параметри об’єкту (в нашому прикладі будинку), що повинні чітко взаємодіяти між собою, скоординувати всі зв’язки між різними частинами будинку, навіть якщо його зараз й не існує. А методи — це функції, що визначають взаємодію з будинком, а властивості — це його «змінні» компоненти. Тож, повертаючись до мови програмування PHP, можемо визначити властивості як змінні класу, а методи визначити в якості функцій класу. А оскільки двигун CMS WordPress побудований на PHP, тому і використовує його ООП підхід. Отже, і тут є властивості та методи, до огляду яких ми зараз і перейдемо.
Основні властивості класу WP_Query
у ВордПрес
Тепер від загального PHP перейдемо до PHP, що використовується в системі керування контентом ВордПрес, зокрема до властивостей (іншими словами, змінних) класу WP_Query
.
Значення запиту: $query
У цій властивості зберігається рядок запиту, що переданий об’єкту $wp_query
.
Масив змінних запиту: $query_vars
Ця властивість зберігає асоціативний масив змінних $query
(та їхніх значень).
Об’єкт, що в запиті: $queried_object
Ця властивість зберігає поточний об’єкт запиту, наприклад об’єкт $post
, якщо це запит публікації, або об’єкт $author
, якщо це запит автора.
Ідентифікатор об’єкта в запиті: $queried_object_id
Ця властивість зберігає ідентифікатор поточного об’єкта в запиті.
Публікації, що були отримані в результаті запиту: $posts
Ця властивість зберігає публікації, що повернув поточний запит.
Кількість дописів, які відображаються: $post_count
Ця властивість зберігає кількість публікацій для поточного запиту.
Кількість публікацій, яку повернув запит: $found_posts
У даній властивості зберігається значення кількості отриманих з запиту публікацій.
Кількість сторінок публікацій: $max_num_pages
Ця властивість зберігає загальну кількість отриманих сторінок — вона обчислюється шляхом ділення $found_posts
на $posts_per_page
.
Індекс поточної публікації: $current_post
Ця властивість зберігає номер індексу поточного елемента в циклі. Наприклад, значення -1
вказує, що цикл знаходиться на самому початку. Даний індекс в подальшому збільшується за допомогою методу next_post()
.
Поточна публікація: $post
Ця властивість містить дані поточної публікації.
Основні логічні значення умовного тегу: $is_{умова}
Давайте розглянемо основні та найбільш часто використовувані властивості, що при зазначенні в умовному тегові надають нам інформацію про поточний статус публікації:
$is_home
: перевіряє, чи є дана сторінка головною сторінкою блогу (визначеною в налаштуваннях як головна сторінка публікацій)$is_admin
: перевіряє, чи знаходиться поточний користувач у адміністративній панелі (Консоль, Майстерня) чи ні$is_single
: перевіряє, чи є дана публікація окремою чи ні (але без врахування постів типу “вкладення” та “сторінка”). А для всіх типів постів використовуйте умовний тег$is_singular
$is_page
: перевіряє, чи тип даного посту є сторінка (page
) чи ні$is_archive
: перевіряє, чи є дана сторінка сторінкою із типом «архів» чи ні$is_date
: умова перевіряє, чи є дана сторінка сторінкою із типом архіву на основі дати. Додатково: умовні теги$is_year
— для перевірки архівів по рокам,$is_month
— для перевірки архівів по місяцям,$is_time
— для перевірки архівів на основі часу (погодинно, похвилинно чи посекундно).$is_author
: перевіряє, чи є дана сторінка архівною сторінкою публікацій певного автора чи ні$is_category
: перевіряє, чи є дана сторінка архівною сторінкою публікацій на основні категорії чи ні$is_tag
: перевіряє, чи є дана сторінка архівною сторінкою публікацій на основні тегів, чи ні$is_tax
: перевіряє, чи є дана сторінка архівною сторінкою публікацій на основні таксономії, чи ні. Дефолтні таксономії у ВордПрес: рубрики, мітки, меню, формати постів$is_search
: перевіряє, чи являється поточна сторінка сторінкою «результатів пошуку»
Основні методи класу WP_Query
у ВордПрес
Тепер від властивостей класу WP_Query
давайте перейдемо до його методів (іншими словами, функцій).
Метод init()
Цей метод просто ініціалізує об’єкт, встановлюючи для всіх властивостей дефолтно значення NULL
, 0
або FALSE
.
Метод parse_query( $query )
Цей метод використовує властивість $query
, щоб проаналізувати запит і на основі цього заповнити всі інші властивості (окрім $posts
, $post_count
, $post
і $current_post
).
Метод parse_query_vars()
Цей метод повторно аналізує змінні запиту.
Метод get( $query_var )
Цей метод отримує задану змінну запиту.
Метод set( $query_var, $value )
Цей метод встановлює значення вказаної змінної запиту ($query_var
) на певне значення ($value
).
Метод &get_posts()
Цей метод повертає публікації, що були ініційовані запитом, та заповнює значеннями властивості $posts
і $post_count
.
Метод next_post()
Цей метод збільшує індекс $current_post
і переходить до наступної публікації в $posts
, повертаючи поточний об’єкт публікації (обов’язково всередині циклу).
Метод the_post()
Цей метод встановлює глобальну змінну $post
включно з даними наступної публікації (обов’язково всередині циклу).
Метод have_posts()
Цей метод перевіряє, чи залишилися публікації в циклі для обробки, і повертає FALSE
, якщо їх немає (обов’язково перед циклом).
Метод rewind_posts()
Цей метод просто робить скидання властивостей $current_post
і $post
.
Метод &query( $query )
Цей метод викликає два пов’язаних методи parse_query()
і get_posts()
, і повертає результат методу get_posts()
.
Метод get_queried_object()
Цей метод повертає об’єкт, що був у запиті. Додатково метод встановлює значення $queried_object
, якщо його ще не було встановлено.
Метод get_queried_object_id()
Цей метод просто повертає ідентифікатор поточного запитуваного об’єкта (властивість $queried_object_id
).
ПРИМІТКА: якщо ви бачите перед методом амперсанд (&), не лякайтеся — це просто означає, що метод повертає властивість не напряму, а за посиланням. Тобто, ми працюємо не з копією властивості, а посиланням на неї, що була оброблена методом.
На сьогодні все. В даному уроці ми розглянули важливі поняття «властивості» (змінні) та «методи» (функції) у класі WP_Query
, який ми використовуємо для запиту контенту з бази даних. Зустрінемось в наступній частині серії, в якій ми перейдемо до закріплення теоретичної частини серії на практиці. Будемо практикувати створення кастомних запитів з WP_Query
для отримання потрібних публікацій та/або сторінок (включно з урахуванням їх типу).