私たちが知っているように、製品に追加された特定の属性の用語を取得するには、次を使用できます。
$attr_terms = $product->get_attribute( 'attr_slug' );
または、使用できる製品に関係なく特定の属性のすべての用語を取得する
$attr_terms = get_terms( 'pa_attr_slug' );
しかし、特定の製品カテゴリの製品に用語が追加されたすべての属性を取得する方法は?
何かのようなもの:
$cat_attrs = ... ($cat->id);
foreach($cat_attrs as $cat_attr) {
echo $cat_attr->name; // name of attribute
foreach($cat_attr->terms as $term) {
echo $term->name; // name of attribute term
}
}
さて、私は次の解決策を見つけました:
$args = array(
'category' => array( 'category_slug' )
// or 'term_taxonomy_id' => 4 i.e. category ID
);
foreach( wc_get_products($args) as $product ){
foreach( $product->get_attributes() as $attr_name => $attr ){
echo wc_attribute_label( $attr_name ); // attr label
// or get_taxonomy( $attr_name )->labels->singular_name;
foreach( $attr->get_terms() as $term ){
echo $term->name;
}
}
}