【问题标题】:How to create an array for simple product sku and if variation product variation sku and parent sku如何为简单的产品 sku 以及如果变体产品变体 sku 和父 sku 创建一个数组
【发布时间】:2021-07-30 17:14:13
【问题描述】:

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

          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 中传递数组

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
        };

我要做的是在购物车中创建一个包含所有项目的数组,如下所示:

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"}

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    真是个愚蠢的错误,实际上我在进行所有编辑之前就已经正确了。放错了

    cartRecords.push({'itemId': jArray[i]['itemID'] ,'itemGroupId': jArray[i]['itemID']});
    

    两个位置的“itemID”...

    这是完成此任务的正确方法,经过测试并且有效!

    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);
        }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-17
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 2017-11-01
      相关资源
      最近更新 更多