【问题标题】:WooCommerce view all products with variationsWooCommerce 查看所有具有变体的产品
【发布时间】:2016-04-07 09:47:34
【问题描述】:

我有一个 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.

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      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;
      

      【讨论】:

      • 非常感谢。但是我目前的问题是它只显示一种产品而不显示其他产品......有什么想法吗?
      • 找到了。我在最后删除了die;,所以循环不会结束。非常感谢!!!
      • 我发现$variations 数组包含另一个数组。我应该使用另一个循环吗?这是数组:[0] =&gt; Array([attributes] =&gt; Array([attribute_pa_sizes] =&gt; smallmedium[attribute_pa_color] =&gt;green)[image_src] =&gt;
      • 您的代码中$args$plan-&gt;ID 的用法是什么?!
      • 它不能很好地工作,一旦它不会返回不可用的变体
      猜你喜欢
      • 2016-05-03
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-23
      • 2020-05-16
      • 1970-01-01
      • 2018-01-21
      相关资源
      最近更新 更多