在循环外获取Woocommerce产品变体

时间:2014-09-12 10:18:27

标签: wordpress 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' );

欢迎提出任何建议。

2 个答案:

答案 0 :(得分:8)

要在循环外获得产品变体,您需要创建WC_Product_Variable类的新实例,这是一个示例:

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

通过这种方式,您将获得$ variables数组中变体的所有必需信息。

答案 1 :(得分: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>";