Woocommerce $ product-> get_available_variations();没有返回正确的变体集

时间:2018-08-01 19:02:14

标签: woocommerce variations

在我的网站上,我们可能有30多种可变产品,每种都有一组变体。在通过woocommerce_variable_price_html过滤器调用的函数中,我使用以下代码获取变化:

// gather globals for function use
    global $product;

    // get available variations to loop through
    $variations = $product->get_available_variations();

    // loop through variations and test against current page/restrictions to determine which
    // variations will be used and gather their relevant data into the diaper product array
    foreach( $variations as $variation ){...code here...}

我的问题如下:我的一个页面称为空格,它有16个变体,但是此函数仅返回14个变体,看似无故跳过2个,然后从其他产品返回大约4-5个变体集,我无法确定的决定**编辑:其他变体集显然来自页面上显示的链接产品(或因此我已获悉),尽管我从未链接的产品中获取变体。因此在这一部分上似乎还是有些荒谬。

剩下的问题是为什么我在调用它时没有得到完整的变体集,却没有。这是造成问题的原因,因为我使用的是库存变动量来生成显示,以直观地向用户显示进出的东西;如果跳过变体,则函数中不会添加一些库存,并且数字不准确。

  • 是否可以仅调用特定产品ID的版本集?而不是仅仅从页面中拉出?我认为这比提取和过滤大量数据集要好。
  • 是否有人知道从$ product-> get_available_variations();的返回中排除特定变化的原因吗?

查看公共功能get_available_variations的页面,我们看到以下内容:

public function get_available_variations() {
    $available_variations = array();

    foreach ( $this->get_children() as $child_id ) {
      $variation = wc_get_product( $child_id );

      // Hide out of stock variations if 'Hide out of stock items from the catalog' is checked.
      if ( ! $variation || ! $variation->exists() || ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) && ! $variation->is_in_stock() ) ) {
        continue;
      }

      // Filter 'woocommerce_hide_invisible_variations' to optionally hide invisible variations (disabled variations and variations with empty price).
      if ( apply_filters( 'woocommerce_hide_invisible_variations', true, $this->get_id(), $variation ) && ! $variation->variation_is_visible() ) {
        continue;
      }

      $available_variations[] = $this->get_available_variation( $variation );
    }
    $available_variations = array_filter( $available_variations );

    return $available_variations;
  }

我未选中“隐藏可用的变体”,并确保所有变体均具有必需的数据,以确保它们不会被标记为“不可见”

0 个答案:

没有答案
相关问题