- Описание класса
- Методы
- format_terms()
- generate_cache_key()
- get_search_sql()
- get_terms()
- parse_order()
- parse_orderby()
- parse_orderby_meta()
- parse_query()
- populate_terms()
- query()
- __construct()
- Примеры использования
- Получение списка всех терминов
- Форматирование результатов запроса
- Генерация ключа кэша
- Генерация SQL-запроса для поиска
- Сортировка результатов запроса
- Парсинг и обработка аргументов запроса
- Создание массива объектов терминов
- Вопросы и ответы
- Как получить список терминов с помощью WP_Term_Query?
- Как отформатировать результаты запроса WP_Term_Query в нужном формате?
- Как сгенерировать ключ кэша для запроса WP_Term_Query?
- Как выполнить поиск по терминам с помощью WP_Term_Query?
- Как сортировать результаты запроса WP_Term_Query по определенному полю?
- Как использовать мета-запросы в WP_Term_Query?
- Как создать массив объектов терминов из массива идентификаторов терминов?
- Как настроить и выполнить запрос WP_Term_Query?
Описание класса
Класс WP_Term_Query используется для выполнения запросов категорий в WordPress. Он предоставляет методы для поиска, фильтрации и сортировки категорий, а также для получения результатов запроса.
Этот класс является частью ядра WordPress и находится в файле wp-includes/class-wp-term-query.php.
Методы
__construct— Конструктор классаWP_Term_Query. Он инициализирует объект запроса и устанавливает значения параметров.format_terms— Метод используется для форматирования результата запроса в зависимости от запрошенного поля.generate_cache_key— Метод генерирует ключ для кэширования запроса.get_search_sql— Метод используется внутренне для генерации SQL-строки, связанной с параметром «search».get_terms— Метод получает результаты запроса.parse_order— Метод разбирает переменную «order» запроса и приводит ее к ASC или DESC при необходимости.parse_orderby— Метод разбирает и очищает ключи «orderby», переданные в запросе категорий.parse_orderby_meta— Метод генерирует часть SQL-запроса ORDER BY для параметра «orderby», который может быть связан с мета-запросом.parse_query— Метод разбирает аргументы, переданные в запросе категорий, с использованием параметров запроса по умолчанию.populate_terms— Метод создает массив объектов категорий из массива идентификаторов категорий.query— Метод настраивает запрос и получает результаты.
Методы
format_terms()
Метод format_terms() используется для форматирования ответа в зависимости от запрашиваемого поля.
WP_Term_Query::format_terms( WP_Term[] $term_objects, string $_fields ) : WP_Term[]|int[]|string[]
Метод format_terms() принимает два параметра: массив объектов терминов $term_objects и строку $_fields, указывающую поле для форматирования.
$term_objects (обязательный): Массив объектов терминов.
$_fields (обязательный): Поле для форматирования.
Метод format_terms() возвращает массив терминов, строк или целых чисел в зависимости от запрашиваемого поля.
<?php
// Массив объектов терминов
$term_objects = array( $term1, $term2, $term3 );
// Поле для форматирования
$_fields = 'name';
// Форматирование терминов
$formatted_terms = WP_Term_Query::format_terms( $term_objects, $_fields );
// Вывод отформатированных терминов
foreach ( $formatted_terms as $term ) {
echo $term;
}
?>
В приведенном выше примере мы создаем массив объектов терминов $term_objects и указываем поле 'name' для форматирования. Затем мы вызываем метод format_terms() и передаем ему массив терминов и поле для форматирования. Результатом будет массив отформатированных терминов, которые мы выводим с помощью цикла foreach.
generate_cache_key()
Метод generate_cache_key() класса WP_Term_Query используется для генерации ключа кэша. Ключ кэша представляет собой уникальную строку, которая используется для идентификации кэшированных результатов запроса терминов.
WP_Term_Query::generate_cache_key( array $args, string $sql ): string Метод generate_cache_key() принимает два параметра: массив $args с обязательными аргументами для запроса терминов и строку $sql с обязательным SQL-запросом.
$args (array) — Обязательные аргументы для запроса терминов.
$sql (string) — Обязательный SQL-запрос.
Метод generate_cache_key() возвращает строку — ключ кэша.
<code>$args</code> = array(
'taxonomy' => 'category',
'orderby' => 'name',
'order' => 'ASC',
);
<code>$sql</code> = "SELECT * FROM wp_terms WHERE taxonomy = 'category' ORDER BY name ASC";
<code>$cache_key</code> = WP_Term_Query::generate_cache_key( <code>$args</code>, <code>$sql</code> );
// Результат: "wp_term_query:taxonomy=category&orderby=name&order=ASC&sql=SELECT * FROM wp_terms WHERE taxonomy = 'category' ORDER BY name ASC"
В данном примере мы создаем массив $args с аргументами для запроса терминов и строку $sql с SQL-запросом. Затем мы вызываем метод generate_cache_key() и передаем ему эти параметры. Метод возвращает строку, которая представляет собой ключ кэша, основанный на переданных аргументах и SQL-запросе.
get_search_sql()
Метод get_search_sql() используется внутренне для генерации SQL-строки, связанной с параметром «search». Он преобразует поисковую строку в SQL-запрос, который может быть использован для поиска терминов.
WP_Term_Query::get_search_sql( string $search ): string Метод get_search_sql() принимает один обязательный параметр:
$search(string) — Поисковая строка.
Метод возвращает строку SQL для поиска.
$search(string) — Обязательный. Поисковая строка.
Параметр $search представляет собой строку, которую нужно найти. Это может быть любая поисковая фраза или ключевое слово.
Метод get_search_sql() возвращает строку SQL для поиска. Эта строка может быть использована для выполнения запроса к базе данных и поиска терминов, соответствующих заданной поисковой строке.
<?php
$search = 'example'; // Поисковая строка
// Получение SQL-строки для поиска
$search_sql = WP_Term_Query::get_search_sql( $search );
// Вывод SQL-строки
echo $search_sql;
?> В этом примере мы создаем переменную $search и присваиваем ей значение «example». Затем мы вызываем метод get_search_sql() класса WP_Term_Query с параметром $search и сохраняем результат в переменной $search_sql. Наконец, мы выводим значение переменной $search_sql, которая будет содержать SQL-строку для поиска терминов, соответствующих поисковой строке «example».
get_terms()
Метод get_terms() класса WP_Term_Query используется для выполнения запроса к базе данных WordPress и получения результатов в виде терминов (категорий, меток и т.д.).
Этот метод позволяет получить список терминов, удовлетворяющих определенным условиям, таким как идентификаторы, имена, родительские термины и т.д.
WP_Term_Query::get_terms( $args ); Метод get_terms() принимает один обязательный аргумент $args, который является массивом параметров запроса. В этом массиве вы можете указать различные параметры для фильтрации и сортировки терминов.
Например, вы можете указать параметр 'taxonomy' для указания таксономии, к которой относятся термины, или параметр 'include' для указания конкретных идентификаторов терминов, которые вы хотите получить.
Метод get_terms() возвращает массив терминов или количество терминов в виде числовой строки, если в параметрах запроса указано 'count'.
Каждый термин представлен объектом класса WP_Term, который содержит информацию о термине, такую как идентификатор, имя, слаг и т.д.
parse_order()
Метод parse_order() используется для разбора значения переменной запроса ‘order’ и приведения его к значениям ASC или DESC, если это необходимо.
WP_Term_Query::parse_order( string $order ): string Метод parse_order() принимает один обязательный параметр:
$order(string) — Значение переменной запроса ‘order’.
$order (string) — Обязательный параметр. Значение переменной запроса ‘order’.
Метод parse_order() возвращает санитизированное значение переменной запроса ‘order’ в виде строки.
<code>$order = 'DESC'; // Значение переменной запроса 'order'
$term_query = new WP_Term_Query();
// Парсинг значения переменной запроса 'order'
$parsed_order = $term_query->parse_order( $order );</code> В приведенном выше примере кода создается новый экземпляр класса WP_Term_Query. Затем, значение переменной запроса ‘order’ передается в метод parse_order(). Результатом выполнения метода будет санитизированное значение переменной запроса ‘order’, которое будет сохранено в переменной $parsed_order.
parse_orderby()
Метод parse_orderby() класса WP_Term_Query используется для разбора и очистки ключей orderby, переданных в запросе терминов.
WP_Term_Query::parse_orderby( string $orderby_raw ): string|false Метод parse_orderby() принимает один обязательный параметр:
$orderby_raw(string) — Псевдоним для поля, по которому нужно сортировать.
$orderby_raw (string) — Обязательный. Псевдоним для поля, по которому нужно сортировать.
Метод parse_orderby() возвращает строку, которая будет использоваться в выражении ORDER BY. Возвращает false, если значение $orderby_raw не прошло очистку.
<?php
/**
* Пример использования метода parse_orderby()
*/
// Псевдоним для поля, по которому нужно сортировать
$orderby_raw = 'name';
// Вызов метода parse_orderby()
$orderby = WP_Term_Query::parse_orderby( $orderby_raw );
// Вывод результата
echo $orderby;
?> В данном примере мы используем метод parse_orderby() для разбора и очистки псевдонима поля 'name'. Результатом будет строка, которая будет использоваться в выражении ORDER BY.
parse_orderby_meta()
Метод parse_orderby_meta() используется для генерации фрагмента SQL-запроса ORDER BY для параметра orderby, который может быть связан с мета-запросом. Он преобразует сырое значение параметра orderby в фрагмент SQL-запроса, который будет использоваться для сортировки результатов запроса.
WP_Term_Query::parse_orderby_meta( string $orderby_raw ): string Метод parse_orderby_meta() принимает один обязательный параметр:
$orderby_raw(string) — Сырое значение параметраorderby, переданное в WP_Term_Query.
$orderby_raw (string) — Обязательный. Сырое значение параметра orderby, переданное в WP_Term_Query.
Метод parse_orderby_meta() возвращает фрагмент SQL-запроса ORDER BY в виде строки.
<?php
// Параметры метода
$orderby_raw = 'meta_value_num';
// Генерация фрагмента SQL-запроса ORDER BY
$orderby = WP_Term_Query::parse_orderby_meta( $orderby_raw );
// Вывод результата
echo $orderby;
?> В данном примере мы используем метод parse_orderby_meta() для генерации фрагмента SQL-запроса ORDER BY на основе сырого значения $orderby_raw. Результатом будет фрагмент SQL-запроса, который можно использовать для сортировки результатов запроса.
parse_query()
Метод parse_query() используется для разбора аргументов, переданных в запросе терминов, с использованием параметров запроса по умолчанию. Он принимает строку или массив аргументов запроса и возвращает объект WP_Term_Query с установленными параметрами запроса.
Метод parse_query() обрабатывает переданные аргументы и устанавливает значения для всех параметров запроса терминов. Он выполняет разбор аргументов, таких как таксономия, идентификаторы объектов, сортировка, фильтры и другие параметры, и устанавливает их в соответствующие свойства объекта WP_Term_Query.
Метод parse_query() используется для создания объекта WP_Term_Query с заданными параметрами запроса терминов. После создания объекта WP_Term_Query можно использовать его для выполнения запроса и получения результатов.
WP_Term_Query::parse_query( string|array $query = '' )
$query(строка или массив) — Опциональные аргументы запроса WP_Term_Query. См. WP_Term_Query::__construct() для получения дополнительных аргументов.
<?php
$args = array(
'taxonomy' => 'category',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => true,
'number' => 10,
'fields' => 'all',
'name__like' => 'example',
'meta_key' => 'featured',
'meta_value' => 'yes',
);
$query = WP_Term_Query::parse_query( $args );
// Выполнение запроса и получение результатов
$terms = $query->get_terms();
?>
В приведенном выше примере кода создается массив аргументов $args с различными параметрами запроса терминов. Затем метод parse_query() вызывается с этим массивом аргументов для создания объекта WP_Term_Query с заданными параметрами запроса.
После создания объекта WP_Term_Query можно использовать метод get_terms() для выполнения запроса и получения результатов. В этом примере результаты запроса сохраняются в переменной $terms.
populate_terms()
Метод populate_terms() создает массив объектов терминов из массива идентификаторов терминов. Он используется для заполнения объекта запроса терминов.
WP_Term_Query::populate_terms( Object[]|int[] $terms ): WP_Term[] Метод populate_terms() принимает один обязательный параметр:
$terms(тип:Object[]|int[], обязательный) — Список объектов или идентификаторов терминов.
$terms (тип: Object[]|int[], обязательный) — Список объектов или идентификаторов терминов. Может принимать массив объектов терминов или массив идентификаторов терминов.
Метод populate_terms() возвращает массив объектов терминов (WP_Term[]).
$terms = array(
(object) array(
'term_id' => 1,
'name' => 'Term 1',
'slug' => 'term-1',
'taxonomy' => 'category'
),
(object) array(
'term_id' => 2,
'name' => 'Term 2',
'slug' => 'term-2',
'taxonomy' => 'category'
)
);
$populated_terms = WP_Term_Query::populate_terms( $terms );
В приведенном выше примере кода создается массив объектов терминов $terms. Затем метод populate_terms() вызывается с этим массивом, и результат сохраняется в переменную $populated_terms. В результате будет создан массив объектов терминов, содержащий термины с указанными идентификаторами, именами, слагами и таксономиями.
query()
Метод query() класса WP_Term_Query устанавливает запрос и извлекает результаты. Он используется для выполнения запросов к таксономиям (терминам) в WordPress.
WP_Term_Query::query( string|array $query ) Метод query() принимает один обязательный параметр $query, который может быть массивом или строкой запроса в формате URL. Он содержит параметры запроса, которые определяют, какие термины будут извлечены.
$query (string|array) (обязательный): Массив или строка запроса в формате URL с параметрами запроса. Возможные параметры:
'taxonomy'(string|array) — Таксономия или массив таксономий, к которым относятся термины.'include'(array|string|int) — Включить только указанные термины.'exclude'(array|string|int) — Исключить указанные термины.'exclude_tree'(array|string|int) — Исключить термины и их потомков.'number'(int) — Количество терминов для извлечения.'offset'(int) — Пропустить указанное количество терминов.'orderby'(string|array) — Сортировка терминов. По умолчанию: ‘name’.'order'(string) — Порядок сортировки. По умолчанию: ‘ASC’.'fields'(string) — Поля терминов для извлечения. По умолчанию: ‘all’.'count'(bool|int|string) — Вернуть только количество терминов. По умолчанию: false.'name__like'(string) — Вернуть термины, чьи названия содержат указанную строку.'parent'(int) — Вернуть термины, принадлежащие указанному родительскому термину.'child_of'(int) — Вернуть термины, являющиеся потомками указанного термина.'slug__in'(array|string) — Вернуть термины с указанными слагами.'slug__not_in'(array|string) — Исключить термины с указанными слагами.'meta_query'(array) — Массив параметров для мета-запроса.
Метод query() возвращает массив терминов (WP_Term[]), массив идентификаторов терминов (int[]), массив слагов терминов (string[]) или строку с числом терминов в виде числа, если в запросе указан параметр 'count'.
<?php
$args = array(
'taxonomy' => 'category',
'orderby' => 'name',
'order' => 'ASC',
'number' => 5,
'fields' => 'all',
'count' => false,
'name__like' => 'example',
'parent' => 0,
'meta_query' => array(
array(
'key' => 'color',
'value' => 'blue',
'compare' => 'LIKE'
)
)
);
$terms = WP_Term_Query::query( $args );
?> В приведенном выше примере кода выполняется запрос к таксономии «category» и извлекаются термины, удовлетворяющие указанным параметрам. Результат сохраняется в переменной $terms.
__construct()
Метод «__construct()» является конструктором класса «WP_Term_Query». Он используется для создания нового объекта запроса терминов (категорий).
Конструктор выполняет инициализацию объекта запроса терминов и принимает один параметр — массив или строку с параметрами запроса.
Метод «__construct()» выполняет следующие действия:
- Инициализирует объект запроса терминов.
- Устанавливает параметры запроса, если они переданы.
WP_Term_Query::__construct( string|array $query = '' ) Метод «__construct()» принимает один параметр — массив или строку с параметрами запроса. Параметр $query является необязательным и по умолчанию равен пустой строке.
Метод «__construct()» принимает следующие параметры:
$query(string|array) — Массив или строка с параметрами запроса терминов.
<?php
$args = array(
'taxonomy' => 'category',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => true,
'number' => 10
);
$query = new WP_Term_Query( $args );
?> В приведенном выше примере кода создается новый объект запроса терминов с использованием класса «WP_Term_Query». Параметры запроса передаются в виде массива $args. В данном примере выполняется запрос категорий (таксономии «category») с сортировкой по имени в алфавитном порядке (параметр ‘orderby’ => ‘name’) в возрастающем порядке (параметр ‘order’ => ‘ASC’). Также скрываются пустые категории (параметр ‘hide_empty’ => true) и возвращается максимум 10 категорий (параметр ‘number’ => 10).
Примеры использования
Получение списка всех терминов
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
);
$term_query = new WP_Term_Query($args);
$terms = $term_query->get_terms();
if (!empty($terms)) {
foreach ($terms as $term) {
echo $term->name;
}
}
В данном примере мы создаем новый объект класса WP_Term_Query с аргументами, указывающими на таксономию «category» и отображение пустых терминов. Затем мы получаем список терминов с помощью метода get_terms() и выводим их имена.
Форматирование результатов запроса
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
);
$term_query = new WP_Term_Query($args);
$terms = $term_query->get_terms();
if (!empty($terms)) {
$formatted_terms = $term_query->format_terms($terms, 'name');
foreach ($formatted_terms as $term_name) {
echo $term_name;
}
}
В этом примере мы используем метод format_terms(), чтобы отформатировать результаты запроса. Мы передаем список терминов и указываем, что нам нужно отформатировать их имена. Затем мы выводим отформатированные имена терминов.
Генерация ключа кэша
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
);
$term_query = new WP_Term_Query($args);
$cache_key = $term_query->generate_cache_key();
echo $cache_key;
В этом примере мы используем метод generate_cache_key(), чтобы сгенерировать ключ кэша для запроса. Мы выводим сгенерированный ключ кэша.
Генерация SQL-запроса для поиска
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
'search' => 'example',
);
$term_query = new WP_Term_Query($args);
$search_sql = $term_query->get_search_sql();
echo $search_sql;
В этом примере мы используем метод get_search_sql(), чтобы сгенерировать SQL-запрос для поиска. Мы выводим сгенерированный SQL-запрос.
Сортировка результатов запроса
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
'orderby' => 'name',
'order' => 'ASC',
);
$term_query = new WP_Term_Query($args);
$terms = $term_query->get_terms();
if (!empty($terms)) {
foreach ($terms as $term) {
echo $term->name;
}
}
В этом примере мы указываем сортировку результатов запроса по имени термина в порядке возрастания. Затем мы выводим имена отсортированных терминов.
Парсинг и обработка аргументов запроса
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
'orderby' => 'name',
'order' => 'ASC',
);
$term_query = new WP_Term_Query();
$parsed_args = $term_query->parse_query($args);
print_r($parsed_args);
В этом примере мы используем метод parse_query(), чтобы распарсить и обработать аргументы запроса. Мы выводим распарсенные аргументы.
Создание массива объектов терминов
$term_ids = array(1, 2, 3);
$term_query = new WP_Term_Query();
$terms = $term_query->populate_terms($term_ids);
if (!empty($terms)) {
foreach ($terms as $term) {
echo $term->name;
}
}
В этом примере мы создаем массив идентификаторов терминов и используем метод populate_terms(), чтобы создать массив объектов терминов на основе этих идентификаторов. Затем мы выводим имена терминов.
Вопросы и ответы
Как получить список терминов с помощью WP_Term_Query?
Для получения списка терминов с помощью класса WP_Term_Query необходимо создать экземпляр этого класса и вызвать метод get_terms().
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
);
$query = new WP_Term_Query($args);
$terms = $query->get_terms();
Как отформатировать результаты запроса WP_Term_Query в нужном формате?
Для форматирования результатов запроса WP_Term_Query можно использовать метод format_terms(). Этот метод принимает массив терминов и форматирует их в соответствии с указанными параметрами.
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
);
$query = new WP_Term_Query($args);
$terms = $query->get_terms();
$formatted_terms = $query->format_terms($terms);
Как сгенерировать ключ кэша для запроса WP_Term_Query?
Для генерации ключа кэша для запроса WP_Term_Query можно использовать метод generate_cache_key(). Этот метод принимает массив аргументов запроса и возвращает строку, которую можно использовать в качестве ключа кэша.
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
);
$query = new WP_Term_Query($args);
$cache_key = $query->generate_cache_key($args);
Как выполнить поиск по терминам с помощью WP_Term_Query?
Для выполнения поиска по терминам с помощью класса WP_Term_Query можно использовать метод get_search_sql(). Этот метод принимает строку поискового запроса и возвращает SQL-запрос, который можно использовать для поиска терминов.
$search_query = 'example';
$query = new WP_Term_Query();
$search_sql = $query->get_search_sql($search_query);
Как сортировать результаты запроса WP_Term_Query по определенному полю?
Для сортировки результатов запроса WP_Term_Query по определенному полю необходимо использовать параметр ‘orderby’. Этот параметр принимает значение поля, по которому нужно отсортировать результаты. Допустимые значения поля: ‘name’, ‘slug’, ‘term_group’, ‘term_id’, ‘id’, ‘description’, ‘parent’, ‘count’.
Пример сортировки результатов по полю ‘name’:
$args = array(
'orderby' => 'name',
'order' => 'ASC',
);
$query = new WP_Term_Query( $args );
Как использовать мета-запросы в WP_Term_Query?
Для использования мета-запросов в WP_Term_Query необходимо использовать параметр ‘meta_query’. Этот параметр принимает массив с параметрами мета-запроса. Каждый элемент массива представляет собой массив с параметрами одного мета-запроса.
Пример использования мета-запросов:
$args = array(
'meta_query' => array(
array(
'key' => 'color',
'value' => 'blue',
'compare' => 'LIKE',
),
),
);
$query = new WP_Term_Query( $args );
Как создать массив объектов терминов из массива идентификаторов терминов?
Для создания массива объектов терминов из массива идентификаторов терминов можно использовать метод ‘populate_terms’ класса WP_Term_Query. Этот метод принимает массив идентификаторов терминов и возвращает массив объектов терминов.
Пример создания массива объектов терминов:
$term_ids = array( 1, 2, 3 );
$terms = ( new WP_Term_Query )->populate_terms( $term_ids );
Как настроить и выполнить запрос WP_Term_Query?
Для настройки и выполнения запроса WP_Term_Query необходимо создать объект класса WP_Term_Query и передать ему массив аргументов с настройками запроса. Затем вызвать метод ‘get_terms’ объекта WP_Term_Query для выполнения запроса и получения результатов.
Пример настройки и выполнения запроса:
$args = array(
'taxonomy' => 'category',
'hide_empty' => false,
);
$query = new WP_Term_Query( $args );
$terms = $query->get_terms();
Класс WP_Term_Query предоставляет мощный инструмент для выполнения запросов к таксономиям WordPress. С его помощью можно легко сортировать результаты запросов, использовать мета-запросы, создавать массивы объектов терминов и выполнять запросы с различными настройками. Этот класс является важной частью разработки на WordPress и позволяет эффективно работать с таксономиями и терминами.