我有一家拥有可变产品的WooCommerce商店。
我想创建某种导出(在页面上),向我显示所有产品,包括表格中的变体。
我正在查看所有产品并创建了一个循环来获取变体,但它只显示了一个产品变体。
<?php
/*
Template Name: Store Management
*/
if (!is_user_logged_in() || !current_user_can('manage_options')) wp_die('This page is private.');
// Get
$args = array(
'post_type' => 'product',
'numberposts' => -1,
);
$products = get_posts( $args );
echo '<pre>';
print_r($products);
echo '</pre>';
foreach($products as $product):
$args = array(
'post_parent' => $plan->ID,
'post_type' => 'product_variation',
'numberposts' => -1,
);
$product = wc_get_product( $product->ID );
$variations = $product->get_available_variations();
echo '<pre>';
print_r($variations);
echo '</pre>';
endforeach;
?>
有谁能告诉我如何获得所有产品的所有变化?
微米。
答案 0 :(得分:1)
首先不要覆盖循环内的产品变量。其次,你必须检查天气产品是简单的还是可变的。因为简单的产品不会有变种。所以你的代码将是这样的:
foreach($products as $product):
$product_s = wc_get_product( $product->ID );
if ($product_s->product_type == 'variable') {
$args = array(
'post_parent' => $plan->ID,
'post_type' => 'product_variation',
'numberposts' => -1,
);
$variations = $product_s->get_available_variations();
echo '<pre>';
print_r($variations);
echo '</pre>';
}
endforeach;
答案 1 :(得分:0)
这是我的代码,用于获取WooCommerce v3 +中的所有产品和版本:
<?php
$args = [
'status' => 'publish',
'orderby' => 'name',
'order' => 'ASC',
'limit' => -1,
];
$all_products = wc_get_products($args);
foreach ($all_products as $key => $product) {
echo $product->get_title();
if ($product->get_type() == "variable") {
foreach ($product->get_variation_attributes() as $variations) {
foreach ($variations as $variation) {
echo $product->get_title() . " - " . $variation;
}
}
}
}