SebWeo
В сьогоднішній частині з серії уроків по запитам 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 для запиту публікацій по їх метаданих (або користувальницьких полях). Це повинно дати вам велику гнучкість при роботі із цим популярним двигуном та використовуваною базою даних.
В наступному (заключному) уроці ми підіб’ємо теоретичні підсумки по всім урокам та розглянемо кілька практичних прикладів застосування отриманих знань.
Наразі практично жодну сферу життя людини не можна уявити без гаджетів. Ці підтримувані штучним інтелектом…
У нашій подорожі світом сокетів ми почали з "верхнього поверху" — WebSocket у браузері, потім…
У попередній статті ми говорили про WebSockets — технологію, що дозволяє створювати інтерактивні чати в…
Шкіра немовляти – тонка та ніжна. Ще не справляється із захистом організму від зовнішніх факторів.…
Уявіть собі телефонну розмову. Ви дзвоните другу, він піднімає слухавку, і ви можете говорити одночасно,…
Довгий час планшети сприймалися виключно як пристрої для споживання контенту: подивитися YouTube, погортати стрічку новин…