【问题标题】:Getting product variations from WC_Product_Variation从 WC_Product_Variation 获取产品变体
【发布时间】:2021-12-02 02:54:59
【问题描述】:

我有一个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 变量,已经是一个变体。有没有办法获得同一产品的其他变体?

谢谢

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    如果您检查对象的类型,则它属于 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();
    

    【讨论】:

    • 我的对象类型是WC_Product_Variation
    【解决方案2】:

    您应该检查的类型名称是“变量”,而不是“变体”:

    if ($product->is_type( 'variable' ) {
        // do code 
    }
    

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

    /**
     * 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-&gt;is_type('type') 方法检查产品类型。这确保不会在任何不适合的对象上调用该函数。为了使条件正常工作,您需要检查适当的值。完成后,该功能应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 2016-11-27
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 2017-11-01
      • 1970-01-01
      • 2018-12-19
      • 2018-07-20
      相关资源
      最近更新 更多