2014-09-12 111 views
2

我试图列出woocommerce模板之外的各种变体的产品变体和价格。 任何人都可以建议我如何访问该信息?在圈外获取Woocommerce产品变体

我试图做这样的事情:

$tickets = new WC_Product($product_id); 
$variables = $tickets->get_available_variations(); 

但是,这并不工作,因为它是循环之外,则返回错误。

Idealy我想获得像阵列中的所有变化:

$vars = array(
array('name' => 'My var name', 'price' => '123'), 
array('name' => 'My var name', 'price' => '123'), 
); 

也许即使这可以在“save_post”来完成每一个产品创造新的post_meta并保存此以备将来使用,这将然后可以得到像:

$meta = get_post_meta($product_id, '_my_variations'); 

任何建议是值得欢迎的。

回答

5

此使用产品ID获得产品变量,循环和woocommerce模板之外

$args = array(
'post_type'  => 'product_variation', 
'post_status' => array('private', 'publish'), 
'numberposts' => -1, 
'orderby'  => 'menu_order', 
'order'   => 'asc', 
'post_parent' => $product_id // $post->ID 
); 
$variations = get_posts($args); 
echo "<pre>"; print_r($variations); echo "</pre>"; 
+0

感谢您的回复,但这并没有给我所需的数据。 我找到了解决方法,我创建了一个新的循环 – Bobz 2014-09-12 19:57:11

+0

@Bobz如果您真的发布了解决此问题的解决方案,对其他用户会有所帮助。 – indextwo 2015-01-08 19:52:29

+0

@indextwo如上所述'我创建了一个新循环'。 你也可以查看这个插件:http://www.eggplantstudios.ca/woocommerce-product-variation-add-cart-grid/ – Bobz 2015-01-09 20:04:59

7

要获得外循环变型产品,你需要创建WC_Product_Variable类的新实例,最简单的办法,这里是一个例如:

$tickets = new WC_Product_Variable($product_id); 
$variables = $tickets->get_available_variations(); 

通过这种方式,您将拥有所有$ variables数组变量所需的信息。

+0

我试过这个,并得到错误...是否有更多的代码,例如必要的全球化变量? – byronyasgur 2015-03-22 00:02:00

+0

你收到什么错误?无需额外的代码或全球化变量,它在我身边运行良好。 – Rado 2015-06-04 22:13:08

+0

这不起作用。 '无法加载资源:net :: ERR_INCOMPLETE_CHUNKED_ENCODING' – 2017-04-19 08:24:41