Получить список терминов, в которых есть записи в другом термине
У меня есть атрибут продукта под названием "цвет", и когда я нахожусь на странице архива (например, цвет = синий) Я хочу отобразить список всех родительских категорий товаров, содержащих товары с этим атрибутом, цвет= синий.
Я попытался использовать get_queried_object_id(), чтобы получить термин архива (синий) в сочетании с get_terms(), однако я не смог этого понять. Я хотел бы повторить, что я хочу получить список терминов, а не сообщений.
Если кто-нибудь может веди меня в правильном направлении, я был бы тебе признателен!
Этот вопрос кажется похожим на то, что я хочу, однако он использует wpdb и хочет использовать обычный запрос.
Я пытался сделать что-то подобное, чтобы получить список всех сообщений, относящихся к обеим таксономиям (pa_color и категория продукта), но я не уверен, как получить список только категорий.
$current_color = get_queried_object_id();
$query = new WP_Query( array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => 'pa_color',
'field' => 'term_id',
'terms' => $current_color,
'operator' => 'AND'
),
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $cats
)
)
) );
1 answers
Попробуйте заменить 'operator' => 'AND'
на 'relation'=>'AND'
Обновленный фрагмент кода:
$current_color = get_queried_object_id();
$query = new WP_Query( array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'tax_query' => array(
'relation' => 'AND'
array(
'taxonomy' => 'pa_color',
'field' => 'term_id',
'terms' => $current_color,
),
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $cats
)
)
) );
Ссылка: https://developer.wordpress.org/reference/classes/wp_query/#taxonomy-parameters ( Обработка Нескольких Таксономий )
Изменить 1: Вы можете отредактировать приведенный выше запрос, чтобы возвращать только ids
('поля'=> 'идентификаторы') и использовать get_terms
для этих идентификаторов, чтобы получить список категорий
get_terms( array(
'taxonomy' => 'product_cat',
'object_ids' => $posts_matching_criteria
);
Ссылка 1: https://developer.wordpress.org/reference/functions/get_terms/
Ссылка 2 : https://developer.wordpress.org/reference/classes/wp_term_query/__construct/#user-contributed-notes