Використання запитів WP_Query у WordPress — частина 9 (аргументи для мета-даних)

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

 

Що таке мета-дані публікацій в CMS WordPress?

З допомогою цього функціоналу ви можете додавати розширені дані, параметри, тощо для різних таксономій сайту, включаючи публікації, сторінки, категорії, теги, коментарі і тому подібне. Ці дані можуть бути практично любого допустимого формату (текст, чекбокс, поле вибору, дата і т.д.). А поля, у яких можна додавати ці дані, мають різні назви, а саме: кастомні поля (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 для запиту публікацій по їх метаданих (або користувальницьких полях). Це повинно дати вам велику гнучкість при роботі із цим популярним двигуном та використовуваною базою даних.

В наступному (заключному) уроці ми підіб’ємо теоретичні підсумки по всім урокам та розглянемо кілька практичних прикладів застосування отриманих знань.

 

Recent Posts

Основні завдання болотного екскаватора: де і для чого він використовується

Болотний екскаватор – це спеціалізована техніка, призначена для роботи в умовах підвищеної вологості, на болотистих…

5 днів ago

Чому пластинчасті теплообмінники є оптимальним вибором для промисловості

Промислові системи теплопередачі потребують ефективних, надійних і економічних рішень. Одним із найбільш поширених і технологічно…

5 днів ago

Зигмунд Фрейд

Коли ти помер, ти про це не знаєш. Тільки іншим важко. Те саме, коли ти…

6 днів ago

Підбір ігрового ноутбука для комфортного проходження S.T.A.L.K.E.R 2

Як для людини, яка пройшла кожну з трьох оригінальних ігор серії, і на відносно слабкому…

1 тиждень ago

Як навчитися менеджменту в Україні?

Якщо ви закінчили школу і бажаєте присвятити себе процесу керування бізнесом (будь-якого рівня), тоді перед…

1 тиждень ago

Використання запитів WP_Query у WordPress — 10 практик застосування

В сьогоднішній 10-й, заключній, частині серії уроків по запитам WP_Query у ВордПрес ми нарешті закріпимо…

2 тижні ago