попробуйте следующую пользовательскую функцию, которая использует уникальный легкий запрос SQL:
function get_attribute_terms_in_product_cat( $category_term_name, $attribute_taxonomy ){
global $wpdb;
$terms = $wpdb->get_results( "SELECT DISTINCT t.*
FROM {$wpdb->prefix}terms as t
JOIN {$wpdb->prefix}term_taxonomy as tt ON tt.term_id = t.term_id
JOIN {$wpdb->prefix}term_relationships as tr ON tt.term_taxonomy_id = tr.term_taxonomy_id
WHERE tt.taxonomy LIKE '$attribute_taxonomy'
AND tr.object_id IN ( SELECT DISTINCT tr2.object_id
FROM {$wpdb->prefix}term_relationships as tr2
JOIN {$wpdb->prefix}term_taxonomy as tt2 ON tt2.term_taxonomy_id = tr2.term_taxonomy_id
JOIN {$wpdb->prefix}terms as t2 ON tt2.term_id = t2.term_id
WHERE tt2.taxonomy LIKE 'product_cat' AND t2.name = '$category_term_name'
)" );
return $terms;
}
Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.
ИСПОЛЬЗОВАНИЕ :
// Get the "pa_color" attribute terms for product category "Shirts"
$terms = get_attribute_terms_in_product_cat( "Shirts", "pa_color" );
Здесь "Рубашки" - название термина категории продуктов, а "pa_color" Таксономия атрибута продукта…
Вы получите массив значений атрибутов продукта (термин объекта), содержащий:
- термин ID (ключ
term_id
)
- название термина (ключ
name
)
- термин слизняк (ключ
slug
)
Вы можете использовать цикл foreach для доступа к каждому термину объекта:
// Get the "pa_color" attribute terms for product category "Shirts"
$terms = get_attribute_terms_in_product_cat( "Shirts", "pa_color" );
// Loop through each term
foreach( $terms as $term ){
$term_id = $term->term_id;
$term_name = $term->name;
$term_slug = $term->slug;
}