$cart_item = $woocommerce->cart->get_cart();
上記のコードがあります。
cart_itemでprint_rを実行すると、多次元配列が取得されます。
Array( [a6292668b36ef412fa3c4102d1311a62] => Array ( [product_id] => 6803
Product_idのみを取得するにはどうすればよいですか?
$ test = $cart_item['data'];
を試しました
print_r($test);
うまくいきませんでした。
Foreachループ内の各カートアイテムの_product ID
_を取得するには(単純な製品の場合):
_foreach( WC()->cart->get_cart() as $cart_item ){
$product_id = $cart_item['product_id'];
}
_
可変製品の場合、_variation ID
_を取得するには:
_foreach( WC()->cart->get_cart() as $cart_item ){
$variation_id = $cart_item['variation_id'];
}
_
または両方の場合(where _$cart_item['data']
_ is _WC_Product
_ Woocommerce 3+のオブジェクト]:
_foreach( WC()->cart->get_cart() as $cart_item ){
// compatibility with WC +3
if( version_compare( WC_VERSION, '3.0', '<' ) ){
$product_id = $cart_item['data']->id; // Before version 3.0
} else {
$product_id = $cart_item['data']->get_id(); // For version 3 or more
}
}
_
更新:ループ外でのプロダクトIDの使用
1)ループを破る(カートの最初のアイテムID(製品ID)を取得するだけ):
_foreach( WC()->cart->get_cart() as $cart_item ){
$product_id = $cart_item['product_id'];
break;
}
_
カート内の最初の商品の_$product_id
_変数を直接使用できます。
2)製品IDの配列の使用(カート内の各アイテムに1つ)。
_$products_ids_array = array();
foreach( WC()->cart->get_cart() as $cart_item ){
$products_ids_array[] = $cart_item['product_id'];
}
_
$products_ids_array[0];
_$products_ids_array[1];
_など…カートのアイテムで製品カテゴリまたは製品タグを確認するにはWordPress has_term()
like:
_foreach( WC()->cart->get_cart() as $cart_item ){
// For product categories (term IDs, term slugs or term names)
if( has_term( array('clothing','music'), 'product_cat', $cart_item['product_id'] ) ) {
// DO SOMETHING
}
// For product Tags (term IDs, term slugs or term names)
if( has_term( array('clothing','music'), 'product_tag', $cart_item['product_id'] ) ) {
// DO SOMETHING ELSE
}
}
_
カートアイテムが製品バリエーションの場合、親変数productを取得するため、常に_
$cart_item['product_id']
_を使用します。製品のバリエーションは、カスタム分類を製品カテゴリおよび製品タグとして処理しません