我有一个WooCommerce
网上商店,T恤在那里出售。当一个人看着购物车时,我想让他们选择改变T恤的尺寸。目前,我制作的下拉菜单如下所示:
<?php
if ( $item->is_type( 'variation' ) ){
?>
<select name="" class="product-size">
<?php
foreach ( $item->get_available_variations() as $variation ):
?>
<option value="">test</option>
<?php
endforeach;
?>
</select>
<?php
}
? >
但是,这会给出以下错误:
Fatal error: Uncaught Error: Call to undefined method WC_Product_Variation::get_available_variations()
所以我突然想到,我的$item
变量已经是一个变体了。有没有办法获得同一产品的其他变体?
谢谢
发布于 2017-06-08 18:04:38
如果您检查对象的类型,则它属于WC_Order_Item_Product类。你可以使用这个
$variationId = $item->get_variation_id();
$variableProduct = new WC_Product_Variable($variationId)
$allVariations = $variableProduct->get_available_variations();
====================================
原来如此。你可以试试这个。
$parentData = $item->get_parent_id();
$variableProduct = new WC_Product_Variable($parentData)
$allVariations = $variableProduct->get_available_variations();
发布于 2021-12-01 18:37:27
您应该检查的类型名称是'variable',而不是'variation':
if ($product->is_type( 'variable' ) {
// do code
}
来自WooCommerce的Here's the source code,其中显示了可用的产品类型:
/**
* Get product types.
*
* @since 2.2
* @return array
*/
function wc_get_product_types() {
return (array) apply_filters(
'product_type_selector',
array(
'simple' => __( 'Simple product', 'woocommerce' ),
'grouped' => __( 'Grouped product', 'woocommerce' ),
'external' => __( 'External/Affiliate product', 'woocommerce' ),
'variable' => __( 'Variable product', 'woocommerce' ),
)
);
}
处理手头问题的其他StackOverflow答案:
Checking for Product Variations
最重要的是首先使用$product->is_type('type')
方法检查产品类型。这确保了函数不会在任何不适合它的对象上被调用。为了使条件正常工作,您需要检查适当的值。一旦完成,函数就应该正常工作。
https://stackoverflow.com/questions/44432304
复制相似问题