Коварная война россии против Украины. Ориентировочные потери врага
(по состоянию на 05.03.2025)
880660
солдат
370
самолетов
331
вертолетов
10256
танков
21304
ББМ
24087
артиллерия
1094
ПВО
1306
РСЗО
39512
машин
28
корабли и катера
Использование запросов WP_Query в WordPress — часть 9 (аргументы для метаданных)
Опубликовано

Использование запросов 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 для запроса публикаций по их метаданным (или пользовательским полям). Это должно придать вам большую гибкость при работе с этим популярным движком и используемой базой данных.

В следующем (заключительном) уроке мы подведем теоретические итоги по всем урокам и рассмотрим несколько практических примеров применения полученных знаний.

 

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Быстрый доступ по сайту SebWeo
Угости меня кофе