В сьогоднішній частині з серії уроків по запитам WP_Query у ВордПрес ми будемо розглядати аргументи, які можна використовувати для отримання публікацій по кастомним полям (спеціальним полям, метабоксам довільних полів), або ж мета-даним.
З допомогою цього функціоналу ви можете додавати розширені дані, параметри, тощо для різних таксономій сайту, включаючи публікації, сторінки, категорії, теги, коментарі і тому подібне. Ці дані можуть бути практично любого допустимого формату (текст, чекбокс, поле вибору, дата і т.д.). А поля, у яких можна додавати ці дані, мають різні назви, а саме: кастомні поля (custom fields), довільні поля, додаткові поля або ж просто мета-дані.
У WordPress є три основні типи метаданих, що зберігаються окремо у базі даних та з якими працюють наступні класи: мета публікацій (клас WP_Query
), мета користувачів (клас WP_User_Query
) та мета коментарів (клас WP_Comment_Query
). Якщо вам потрібно використовувати лише аргументи метаданих публікації у своєму запиті (без інших аргументів), вам достатньо буде використовувати клас WP_Meta_Query
, який є «допоміжним класом» для WP_Query
при фільтрації по метаданим. Він генерує необхідний SQL запит для пошуку по мета-даним. Але основна робота «лягає на плечі» саме класу WP_Query
.
Отже, як ви бачите, функціонал метаданих публікацій додатково керується окремим класом під назвою WP_Meta_Query
. Це означає, що якщо вам потрібні публікації лише по їх метаданих, тоді у вас на вибір є ці два класи: WP_Meta_Query
або WP_Query
(який також має доступ до класу WP_Meta_Query
). Основна відмінність між цим класом та WP_Query
полягає в тому, що з першим ви можете створювати прості запити та фільтрації на основі аргументів мета-даних.
Сьогодні будемо розглядати використання саме класу WP_Query
, щоб сформувати запит публікацій по їх мета-даних. А до основних аргументів та параметрів належать такі:
meta_key
(string)meta_value
(string)meta_value_num
(number)'meta_value'
: meta_compare
(string). Можливі значення: ‘=
‘ (значення за замовчуванням), ‘!=
‘, ‘>
‘, ‘>=
‘, ‘<
‘, ‘<=
‘, ‘LIKE
‘, ‘NOT LIKE
‘, ‘IN
‘, ‘NOT IN
‘, ‘BETWEEN
‘, ‘NOT BETWEEN
‘, ‘NOT EXISTS
‘, ‘REGEXP
‘, ‘NOT REGEXP
‘ або ‘RLIKE
‘.
З цими параметрами ви можете сформувати простий запит мета-поля, наприклад, так:
<?php $args = array( // щоб отримати публікації із мета-полем по ключу key1 (незалежно від його значення): 'meta_key' => 'key1' // якщо потрібне конкретне значення, додайте відповідний аргумент у запит: // 'meta_value' => 'value1' // ! можна використовувати навіть запит лише по значенню, незалежно від ключа ); ?>
meta_compare
Ви вже помітили в переліку вище, що існує багато умовних параметрів для аргументу meta_compare
, що не лише розширює, але й трохи ускладнює їх використання. Тому давайте розглянемо лише найчастіше використовувані:
=
. Це значення за замовчуванням!=
>
. Менше ніж: <
>=
. Параметр менше або дорівнює: <=
LIKE
для знаходження значення, подібного до пошукового: можна використовувати разом з символами узагальнення; ігнорує регістр значенняА далі розглянемо деякі практичні приклади використання цього аргументу.
Наприклад, щоб виключити мета-поля із певним значенням ключа, скористайтеся кодом наступного виду:
<?php $args = array( // пошук за виключенням одного ключа 'meta_key' => 'key1', 'meta_compare' => '!=' // параметр не дорівнює // якщо потрібно виключити масив ключів, тоді використовуйте наступне поєднання параметрів // 'meta_key' => 'key1, key2', // 'meta_compare' => 'NOT IN' // параметр виключення з масиву ); ?>
В запиті ви можете використовувати як числові, так і нечислові значення. Наприклад, якщо у вас магазин на WordPress (WooCommerce), і вам потрібно знайти товари по ціні у межах 1500-1750 грн, ось як це може виглядати:
<?php $args = array( 'meta_key' => 'someprodprice', // якщо товар має мета-поле з таким ключем // і має наступне значення (можливо і масив значень) 'meta_value' => array ( '1500', '1750' ), // використання параметру, який дозволяє порівняти два числових значення у діапазоні 'meta_compare' => 'BETWEEN' ); ?>
Якщо вам потрібно сформувати запит з використанням кількох кастомних полів (чи кількох умовних операторів), тоді скористайтеся вкладеним(и) масивом(вами). Це стало можливим починаючи з WordPress версії 4.1.
Ось і все на сьогодні. Ми розглянули використання класу WP_Query
для запиту публікацій по їх метаданих (або користувальницьких полях). Це повинно дати вам велику гнучкість при роботі із цим популярним двигуном та використовуваною базою даних.
В наступному (заключному) уроці ми підіб’ємо теоретичні підсумки по всім урокам та розглянемо кілька практичних прикладів застосування отриманих знань.
Болотний екскаватор – це спеціалізована техніка, призначена для роботи в умовах підвищеної вологості, на болотистих…
Промислові системи теплопередачі потребують ефективних, надійних і економічних рішень. Одним із найбільш поширених і технологічно…
Як для людини, яка пройшла кожну з трьох оригінальних ігор серії, і на відносно слабкому…
Якщо ви закінчили школу і бажаєте присвятити себе процесу керування бізнесом (будь-якого рівня), тоді перед…
В сьогоднішній 10-й, заключній, частині серії уроків по запитам WP_Query у ВордПрес ми нарешті закріпимо…