web-dev-qa-db-ja.com

WC 3.xカートの変動商品からカテゴリを取得する

カート内の各商品のカテゴリを取得したいのですが、次のコードがあります。

<?php
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) :
    $_product = $cart_item['data'];
    $array_cat[] = $_product->get_category_ids();
endforeach;
?>

このコードは単純な製品ではうまく動作しますが、可変の製品では空になります。

私はこれを試しました:

<?php
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) :
    $_product = $cart_item['data'];
    $array_cat1 = $_product->get_category_ids();
    $array_cat2 = wc_get_product_terms( $_product->get_id(),'product_cat' );
    $array_cat3 = wp_get_post_terms( $_product->get_id(),'product_cat' );
    $array_cat4 = get_the_terms( $_product->get_id(), 'product_cat' );
    $array_cat5 = get_the_term_list($_product->get_id(), 'product_cat');
endforeach;
?>

しかし、これらすべての場合において、それは空に見えます。

どうぞよろしくお願いします。

よろしく

1
Alexander

わかりました、私はそれを解決しました。

可変商品では$_product->get_id()はIDではありませんが、それ以外の商品はcartでこれらのバリエーションのIDのみです。

それから、これらのループで変数$cart_item['product_id']でproductのidを見つけることができます

私たちはそれを使うことができます:

$the_product = wc_get_product( $cart_item['product_id'] );
$array_cat = $the_product->get_category_ids();

よろしく

1
Alexander