从变量产品中设置的属性中获取所有值

时间:2017-03-02 13:47:17

标签: php wordpress woocommerce attributes variations

在WooCommerce中,我试图让变量产品的所有值彼此独立。

例如:
我有属性大小。 尺寸有三个值:尺寸S,尺寸M和尺寸L. 如果产品具有尺寸的所有选项,我希望在我的输出中看到产品三次:

  • 一次大小为S,
  • 一次大小为M
  • 和一次大小为L。

使用以下代码,我会看到我有哪些变体。不幸的是,我没有来。

private function readOptions($product) {
    $variations = $product->get_children();
    foreach ($variations as $variation) {
        $single_variation=new WC_Product_Variation($variation);
        $this->doLog(print_r($single_variation->get_variation_attributes(), true));
    }              
}

有没有人知道如何做到这一点?

感谢。

1 个答案:

答案 0 :(得分:1)

我在这里得到了你的功能代码(评论很好)

private function readOptions($product) {

    // Get all attributes & values set in the product (product variations)
    $variation_attributes = $product->get_variation_attributes();

    // iterating through each attribute
    foreach ($variation_attributes as $attribute_slug => $attribute_slug_values){

        // Getting the attribute object (the taxonomy object)
        $attribute_obj = get_taxonomy( $attribute_slug ); // Attribute name: $attribute_obj->label

        // Iterating through each attribute values set in the product
        foreach($attribute_slug_values as $attribute_slug_value){

            // Getting the object of the term value (and the name: $attr_value_obj->name)
            $attr_value_obj = get_term_by( 'slug', $attribute_slug_value, $attribute_slug );

            // Output the names of the product, the attribute and the value
            echo '<p>Product "'.$product->get_title().'" has attribute "'.$attribute_obj->label.'" with value "'.$attr_value_obj->name.'"</p>';
        }
    }          
}

你会得到你所期待的。

  

此处输出只是一个示例,但您可以获得产品中设置的每个属性和值:
  产品+属性+值(对于其中设置的所有属性值)。