В сьогоднішній частині з серії уроків по запитам 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
для запиту публікацій по їх метаданих (або користувальницьких полях). Це повинно дати вам велику гнучкість при роботі із цим популярним двигуном та використовуваною базою даних.
В наступному (заключному) уроці ми підіб’ємо теоретичні підсумки по всім урокам та розглянемо кілька практичних прикладів застосування отриманих знань.
Коли мені хочеться освіжити свій гаджет, прикупити ігрову консоль чи, наприклад, розумний пилосос для дому,…
Уявіть, що ваш основний сайт — це великий будинок, що стоїть на вашій земельній ділянці…
Є два способи командувати жінкою, але ніхто їх не знає Френк МакКінні Кін Хаббард
Найгірше, що в інформаційній війні завжди програє той, хто говорить правду, адже він обмежений правдою,…
Якщо тобі колись захочеться знайти таку людину, яка зможе здолати будь-яку, навіть найважчу біду і…
Уявіть, що ви відкрили піцерію у Києві. Ваша піца настільки смачна, що її хочуть замовити…