根据Woocommerce中的ID获取产品的所有产品变体

时间:2015-07-05 17:03:14

标签: wordpress woocommerce

我有一个自定义页面,我试图列出商店中的每件商品及其变体。

此外,我正在尝试列出按产品属性排序的变量'价格与slug'size'

为了测试,我正在尝试使用ID 381获取单个产品的变体 我的代码是

    $handle=new WC_Product('381');
    $variations1=$handle->get_avaialable_variations();
    foreach ($variations1 as $key => $value) {
            echo '<option  value="'.$value['variation_id'].'">'.implode('/',$value['attributes']).'-'.$value['price_html'].'</option>';

    }

但我得到的错误是

PHP Fatal error:  Call to undefined method WC_Product::get_avaialable_variations() 

我尝试使用

$handle=new WC_Product_Variable('381');

而不是

 $handle=new WC_Product('381'); 

但错误是一样的。

这里有什么帮助吗?

3 个答案:

答案 0 :(得分:6)

试试这段代码。

    $handle=new WC_Product_Variable('12');
        $variations1=$handle->get_children();
        foreach ($variations1 as $value) {
        $single_variation=new WC_Product_Variation($value);
            echo '<option  value="'.$value.'">'.implode(" / ", $single_variation->get_variation_attributes()).'-'.get_woocommerce_currency_symbol().$single_variation->price.'</option>';
}

注意:使用此$ single_variation-&gt; get_price_html()但其输出带有html span标记,这会导致隐藏在选项标记中。

测试了上面的代码,结果如下。

请告诉我这是否适合您。

enter image description here

答案 1 :(得分:1)

您的代码中有一个拼写错误 - get_avaialable_variations

应为get_available_variations

答案 2 :(得分:0)

function get_variation_data_from_variation_id($item_id) {

    $_product = new WC_Product_Variation($item_id);
    $variation_data = $_product->get_variation_attributes(); // variation data in array
    $variation_detail = woocommerce_get_formatted_variation($variation_data, true);  // this will give all variation detail in one line
    // $variation_detail = woocommerce_get_formatted_variation( $variation_data, false);  // this will give all variation detail one by one
    return $variation_data; // $variation_detail will return string containing variation detail which can be used to print on website
    // return $variation_data; // $variation_data will return only the data which can be used to store variation data
}

我之前在stackoverflow上找不到链接 (如果找到使用此方法的答案的链接,请编辑) 。它显示输出的变化数据。该方法将变量id作为参数。

<强>输出

enter image description here