我有一个自定义页面,我试图列出商店中的每件商品及其变体。
此外,我正在尝试列出按产品属性排序的变量'价格与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');
但错误是一样的。
这里有什么帮助吗?
答案 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标记,这会导致隐藏在选项标记中。
测试了上面的代码,结果如下。
请告诉我这是否适合您。
答案 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作为参数。
<强>输出强>: