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 для запиту публікацій по їх метаданих (або користувальницьких полях). Це повинно дати вам велику гнучкість при роботі із цим популярним двигуном та використовуваною базою даних.
В наступному (заключному) уроці ми підіб’ємо теоретичні підсумки по всім урокам та розглянемо кілька практичних прикладів застосування отриманих знань.
Якщо ви коли-небудь цікавилися, як прискорити свій сайт на WordPress, ви, напевно, чули про "кешування".…
Коли ми говоримо про веб-розробку, перше, що спадає на думку — це HTML та CSS.…
У світі SEO є фраза, яку повторюють так часто, що вона вже стала кліше: "Content…
Створення бізнесу — це як народження дитини. Ви вкладаєте в нього душу, час та гроші.…
Коли ви тільки починаєте працювати з PHP, здається, що все просто: ви пишете код, веб-сервер…
Багато розробників-початківців на Windows починають свій шлях з пакетів типу XAMPP, WampServer або Laragon. Це…