WooCommerce查看所有不同的产品


WooCommerce view all products with variations

我有一家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;
?>

有人能告诉我如何获得所有产品的所有变体吗?

M。

这是我的代码,用于获取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;
            }
        }
    }
}

首先,不要覆盖循环中的乘积变量。其次,你必须检查产品是简单的还是可变的,因为简单的产品不会有变体。所以你的代码是这样的:

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;