Intereting Posts
Запрос SQL для получения списка всех пользователей вместе со своими блогами Получить URL-адрес изображения из медиа-библиотеки во входном Отображать пользовательские поля в отрывке или тизеру Обнаружение, когда TinyMCE «готов», Повторное использование переменной в обратном вызове Настройка личного содержимого для конкретных пользователей с ежедневными обновлениями CPT + CMB2: данные не отображаются только для первого сообщения в цикле Добавление элементов-обложек в the_date (), как в the_title ()? Добавить несколько плагинов Как разделить созданные таблицы таблиц плагинов между двумя сайтами WordPress Проблема создания пользовательских конечных точек для REST Пользовательский тип сообщения 'orderby' => 'meta_value' не работает Могу ли я перейти на wordpress.org и по-прежнему включаться в качестве любимого блога wordpress.com? Как я могу переключать страницы? Пользовательский тип сообщения и body_class: удалить класс «блог»

Использование get_terms () с параметрами meta_query

Я пытаюсь построить таксономический запрос, чтобы отображать только те термины, которые имеют определенное пользовательское значение поля, назначенное ему. Пользовательское поле содержит логическое значение, поэтому я попытался:

$args = array( 'taxonomy' => 'product_cat', 'hide_empty' => false, 'meta_key' => 'featured', 'meta_value' => true ); 

Также:

 $args = array( 'taxonomy' => 'product_cat', 'hide_empty' => false, 'meta_query' => array( array( 'key' => 'featured', 'value' => true, 'compare' => '=' ) ) ); 

Ни один из них не дал ожидаемых результатов. Что мне не хватает?

Solutions Collecting From Web of "Использование get_terms () с параметрами meta_query"

Вставка значений булевских терминов

Когда мы добавляем несуществующий термин meta, например,

 add_term_meta( 123, 'test', true ); 

то мы фактически запускаем следующую вставку:

 $wpdb->insert( 'wp_termmeta', array( 'term_id' => 123, 'meta_key' => 'test', 'meta_value' => true ) ); 

в общей функции add_metadata() .

Теперь wpdb::insert() на самом деле является оберткой для wpdb::_insert_replace_helper() которая подготавливает запрос вставки SQL и отображает значения вставки:

 INSERT INTO `wp_termmeta` (`term_id`, `meta_key`, `meta_value`) VALUES (%d, %s, %s) 

или в нашем тестовом примере:

 INSERT INTO `wp_termmeta` (`term_id`, `meta_key`, `meta_value`) VALUES (123, 'test', '1') 

Также обратите внимание, что столбец meta_value имеет тип wp_termmeta таблице wp_termmeta .

Таким образом, логическое значение true сохраняется как строка '1' .

Получение значений булевых значений

Когда get_terms() работает с таким мета-запросом:

 $args = array( 'taxonomy' => 'product_cat', 'hide_empty' => false, 'meta_query' => array( array( 'key' => 'featured', 'value' => true, 'compare' => '=' ) ) ); 

то сгенерированный SQL-запрос содержит:

 wp_termmeta.meta_key = 'featured' AND wp_termmeta.meta_value = '1' 

где true (bool) преобразуется в '1' (строка).