在我的网站上,我们可能有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个变体集,我无法确定的决定**编辑:其他变体集显然来自页面上显示的链接产品(或因此我已获悉),尽管我从未链接的产品中获取变体。因此在这一部分上似乎还是有些荒谬。
剩下的问题是为什么我在调用它时没有得到完整的变体集,却没有。这是造成问题的原因,因为我使用的是库存变动量来生成显示,以直观地向用户显示进出的东西;如果跳过变体,则函数中不会添加一些库存,并且数字不准确。
查看公共功能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;
}
我未选中“隐藏可用的变体”,并确保所有变体均具有必需的数据,以确保它们不会被标记为“不可见”