检查产品是否属于Woocommerce

时间:2018-05-19 13:39:20

标签: php wordpress woocommerce cart custom-taxonomy

在Woocommerce中,我想检查某个产品是否属于“soap”产品类别。

我正在使用此代码:

<?php
    global $woocommerce;
    $items = $woocommerce->cart->get_cart();

        foreach($items as $item => $values) { 
            $_product =  wc_get_product( $values['data']->get_id() );
            $getProductDetail = wc_get_product( $values['product_id'] );
            echo "<b>".$_product->get_title() .'</b>  <br> Quantity: '.$values['quantity'].'<br>'; 
            // $category[] = $item->slug;
            // echo $category[0]->cat_name;
            $categories = $_product->get_categories();
            if(has_term( 'soap',$categories )){
                echo "success";
            }else{

                echo "nope";
            }
        }
?>

然而,当我得到“不”时,我无法使它工作。我认为这是代码的一部分,问题是:

$categories = $_product->get_categories();
            if(has_term( 'soap',$categories )){
                echo "success";
            }else{

                echo "nope";
            }
        }

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

已更新:以下是使其正常工作的正确方法:

foreach(WC()->cart->get_cart() as $cart_item ) { 
    // The instance of the WC_Product object
    $_product = $cart_item['data'];
    // Some output
    echo '<b>'.$cart_item['data']->get_title().'</b>  <br>'; 
    echo 'Quantity: '.$cart_item['quantity'].'<br>'; 

    // Check for a specific product category
    if( has_term( 'soap', 'product_cat', $cart_item['product_id'] ) ){
        echo "success";
    } else {
        echo "nope";
    }
}

经过测试和工作。

注意:

  • 要从购物车商品中获取WC_Product对象,只需使用$cart_item['data']
  • 即可
  • 由于产品变体不管理产品类别或产品标签,因此我们会在$cart_item['product_id']允许的情况下获得父变量产品ID ... 因此,请始终在购物车商品中使用$cart_item['product_id']来定位产品类别或产品标签。
  • Woocommerce产品类别是一种自定义分类,与Wordpres类别不同。
  • product_cat是与has_term()一起使用的产品类别的分类以及与术语相关的其他一些Wordpress功能。