首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为简单产品sku和if变体产品变体sku和父sku创建数组

如何为简单产品sku和if变体产品变体sku和父sku创建数组
EN

Stack Overflow用户
提问于 2021-07-30 17:14:13
回答 1查看 34关注 0票数 1

你好,我需要创建一个数组,如果产品是简单的,产品sku。如果产品是变体,则变体sku和父产品sku。它似乎没有清除"is_type('variable')“检查,只放入itemID和itemGroupID的产品id sku。请参阅我的代码:

代码语言:javascript
复制
          if (!class_exists('WooCommerce')) return;
            $cartRecordsJM = [];
    foreach ( WC()->cart->get_cart() as $cart_item ) {
    // get the data of the cart item
   $product = $cart_item['data'];
   // Only for variable products when cart is not empty
    if( $product->is_type('variable') && ! WC()->cart->is_empty() )
 { 
    $variation_id = WC_Product($cart_item['variation_id']);
    $product_id         = $variation_id->get_sku();
    $parent = WC_Product($product['product_id']);
    $parent_id       = $parent->get_sku();
  } elseif (! WC()->cart->is_empty() ) {
    $simple_id = new WC_Product($cart_item['product_id']);
    $product_id = $simple_id->get_sku();
    $parent_id = '';
  } else {
    return;
  }
    
    $cartRecordsJM[] = [
     'itemID'=> $product_id, 
     'itemGroupID'=> $parent_id 
   ];
      }
?>

然后在javascript中传递数组。

代码语言:javascript
复制
var jArray = <?php echo json_encode($cartRecordsJM); ?>;
        var cartRecords = [];
        var length = jArray.length;
        // Repeat this block for each item the customer has in their cart
        for (let i = 0; i < length;  i++) {
        cartRecords.push({'itemId': jArray[i]['itemID'] ,'itemGroupId': jArray[i]['itemID']});
}
        var page_meta = {
            'pageType': "cart",
            'cartRecords': cartRecords
        };

我要做的是创建购物车中所有商品的数组,如下所示:

代码语言:javascript
复制
cartRecords: Array(5)
0: {itemId: "simple/variation sku", itemGroupId: "parent product sku if variation"}
1: {itemId: "simple/variation sku", itemGroupId: "parent product sku if variation"}
2: {itemId: "simple/variation sku", itemGroupId: "parent product sku if variation"}
3: {itemId: "simple/variation sku", itemGroupId: "parent product sku if variation"}
4: {itemId: "simple/variation sku", itemGroupId: "parent product sku if variation"}
5: {itemId: "simple/variation sku", itemGroupId: "parent product sku if variation"}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-30 19:29:47

这是一个愚蠢的错误,我实际上在我所有的编辑之前就纠正了它。我犯了个错误,把

代码语言:javascript
复制
cartRecords.push({'itemId': jArray[i]['itemID'] ,'itemGroupId': jArray[i]['itemID']});

两个位置都有"itemID“...

这是实现这一目标的正确方法,经过测试并运行良好!

代码语言:javascript
复制
if (page_type == 'cart') {
        <?php
          if (!class_exists('WooCommerce')) {return; }// add this line 
            $cartRecordsJM = [];
    foreach ( WC()->cart->get_cart() as $cart_item ) {
    // get the data of the cart item
   $product = $cart_item['data'];
   // ONLY SIMPLE PRODUCT
    if( $product->is_type('simple') ) { 
    $simple_id = new WC_Product($cart_item['product_id']);
    $product_id = $simple_id->get_sku();
    $parent_id = '';
  } elseif ( $cart_item['variation_id'] > 0 ) {
    $variation_jm = new WC_Product_Variation($cart_item['variation_id']);
    $product_id = $variation_jm->get_sku();
    $parent = wc_get_product($variation_jm->get_parent_id());
    $parent_id       = $parent->get_sku();
  } 
    
    $cartRecordsJM[] = [
     'itemID'=> $product_id, 
     'itemGroupID'=> $parent_id 
   ];
      }
?>
        var jArray = <?php echo json_encode($cartRecordsJM); ?>;
        var cartRecords = [];
        var length = jArray.length;
        // Repeat this block for each item the customer has in their cart
        for (let i = 0; i < length;  i++) {
        cartRecords.push({'itemId': jArray[i]['itemID'] ,'itemGroupId': jArray[i]['itemGroupID']});
}
        var page_meta = {
            'pageType': "cart",
            'cartRecords': cartRecords
        };
        console.log(page_meta);
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68594782

复制
相关文章

相似问题

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