首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从WC_Product_Variation获取产品变体

从WC_Product_Variation获取产品变体
EN

Stack Overflow用户
提问于 2017-06-08 17:48:16
回答 2查看 9.8K关注 0票数 4

我有一个WooCommerce网上商店,T恤在那里出售。当一个人看着购物车时,我想让他们选择改变T恤的尺寸。目前,我制作的下拉菜单如下所示:

代码语言:javascript
运行
复制
<?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
   }
? >

但是,这会给出以下错误:

代码语言:javascript
运行
复制
Fatal error: Uncaught Error: Call to undefined method WC_Product_Variation::get_available_variations()

所以我突然想到,我的$item变量已经是一个变体了。有没有办法获得同一产品的其他变体?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-06-08 18:04:38

如果您检查对象的类型,则它属于WC_Order_Item_Product类。你可以使用这个

代码语言:javascript
运行
复制
$variationId = $item->get_variation_id();

$variableProduct = new WC_Product_Variable($variationId)

$allVariations = $variableProduct->get_available_variations();

====================================

原来如此。你可以试试这个。

代码语言:javascript
运行
复制
$parentData = $item->get_parent_id();
$variableProduct = new WC_Product_Variable($parentData)
$allVariations = $variableProduct->get_available_variations();
票数 1
EN

Stack Overflow用户

发布于 2021-12-01 18:37:27

您应该检查的类型名称是'variable',而不是'variation':

代码语言:javascript
运行
复制
if ($product->is_type( 'variable' ) {
    // do code 
}

来自WooCommerce的Here's the source code,其中显示了可用的产品类型:

代码语言:javascript
运行
复制
/**
 * 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

Subscription Variations

最重要的是首先使用$product->is_type('type')方法检查产品类型。这确保了函数不会在任何不适合它的对象上被调用。为了使条件正常工作,您需要检查适当的值。一旦完成,函数就应该正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44432304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档