在WooCommerce 3中序列化购物车内容而不会丢失数据

时间:2017-07-04 13:29:50

标签: arrays wordpress multidimensional-array woocommerce

我有一个客户想要将他的各个WooCommerce商店的所有购物车重新路由到一个购物车。例如,来自商店A,B,C和D的购物车将被传递到商店F的支付网关。

我找到了一种方法,通过从任何商店获取购物车的内容并将其传递给在WooCommerce中下订单的功能,但我在这里遇到问题,因为如果我if(speed>0)speed=acc+speed-friction var_dump它返回此数组:

WC()->cart->get_cart()

当我尝试循环并存储序列化或编码值时,这就是我得到的:

array(1) {
  ["98f13708210194c475687be6106a3b84"]=>
  array(10) {
    ["product_id"]=>
    int(20)
    ["variation_id"]=>
    int(0)
    ["variation"]=>
    array(0) {
    }
    ["quantity"]=>
    int(2)
    ["line_total"]=>
    float(3001.98)
    ["line_subtotal"]=>
    float(3001.98)
    ["line_tax"]=>
    float(0)
    ["line_subtotal_tax"]=>
    float(0)
    ["line_tax_data"]=>
    array(2) {
      ["total"]=>
      array(0) {
      }
      ["subtotal"]=>
      array(0) {
      }
    }
    ["data"]=>
    object(WC_Product_Simple)#8809 (12) {
      ["object_type":protected]=>
      string(7) "product"
      ["post_type":protected]=>
      string(7) "product"
      ["cache_group":protected]=>
      string(8) "products"
      ["data":protected]=>
      array(48) {
        ["name"]=>
        string(7) "Jet sky"
        ["slug"]=>
        string(7) "jet-sky"
        ["date_created"]=>
        object(WC_DateTime)#8801 (4) {
          ["utc_offset":protected]=>
          int(0)
          ["date"]=>
          string(26) "2017-06-23 15:25:27.000000"
          ["timezone_type"]=>
          int(1)
          ["timezone"]=>
          string(6) "+00:00"
        }
        ["date_modified"]=>
        object(WC_DateTime)#8804 (4) {
          ["utc_offset":protected]=>
          int(0)
          ["date"]=>
          string(26) "2017-06-23 15:25:27.000000"
          ["timezone_type"]=>
          int(1)
          ["timezone"]=>
          string(6) "+00:00"
        }
        ["status"]=>
        string(7) "publish"
        ["featured"]=>
        bool(false)
        ["catalog_visibility"]=>
        string(7) "visible"
        ["description"]=>
        string(278) "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo."
        ["short_description"]=>
        string(93) "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."
        ["sku"]=>
        string(0) ""
        ["price"]=>
        string(7) "1500.99"
        ["regular_price"]=>
        string(7) "1500.99"
        ["sale_price"]=>
        string(0) ""
        ["date_on_sale_from"]=>
        NULL
        ["date_on_sale_to"]=>
        NULL
        ["total_sales"]=>
        int(0)
        ["tax_status"]=>
        string(7) "taxable"
        ["tax_class"]=>
        string(0) ""
        ["manage_stock"]=>
        bool(false)
        ["stock_quantity"]=>
        NULL
        ["stock_status"]=>
        string(7) "instock"
        ["backorders"]=>
        string(2) "no"
        ["sold_individually"]=>
        bool(false)
        ["weight"]=>
        string(0) ""
        ["length"]=>
        string(0) ""
        ["width"]=>
        string(0) ""
        ["height"]=>
        string(0) ""
        ["upsell_ids"]=>
        array(0) {
        }
        ["cross_sell_ids"]=>
        array(0) {
        }
        ["parent_id"]=>
        int(0)
        ["reviews_allowed"]=>
        bool(true)
        ["purchase_note"]=>
        string(0) ""
        ["attributes"]=>
        array(0) {
        }
        ["default_attributes"]=>
        array(0) {
        }
        ["menu_order"]=>
        int(0)
        ["virtual"]=>
        bool(false)
        ["downloadable"]=>
        bool(false)
        ["category_ids"]=>
        array(0) {
        }
        ["tag_ids"]=>
        array(0) {
        }
        ["shipping_class_id"]=>
        int(0)
        ["downloads"]=>
        array(0) {
        }
        ["image_id"]=>
        string(2) "18"
        ["gallery_image_ids"]=>
        array(1) {
          [0]=>
          int(19)
        }
        ["download_limit"]=>
        int(-1)
        ["download_expiry"]=>
        int(-1)
        ["rating_counts"]=>
        array(0) {
        }
        ["average_rating"]=>
        string(1) "0"
        ["review_count"]=>
        int(0)
      }
      ["supports":protected]=>
      array(1) {
        [0]=>
        string(16) "ajax_add_to_cart"
      }
      ["id":protected]=>
      int(20)
      ["changes":protected]=>
      array(0) {
      }
      ["object_read":protected]=>
      bool(true)
      ["extra_data":protected]=>
      array(0) {
      }
      ["default_data":protected]=>
      array(48) {
        ["name"]=>
        string(0) ""
        ["slug"]=>
        string(0) ""
        ["date_created"]=>
        NULL
        ["date_modified"]=>
        NULL
        ["status"]=>
        bool(false)
        ["featured"]=>
        bool(false)
        ["catalog_visibility"]=>
        string(7) "visible"
        ["description"]=>
        string(0) ""
        ["short_description"]=>
        string(0) ""
        ["sku"]=>
        string(0) ""
        ["price"]=>
        string(0) ""
        ["regular_price"]=>
        string(0) ""
        ["sale_price"]=>
        string(0) ""
        ["date_on_sale_from"]=>
        NULL
        ["date_on_sale_to"]=>
        NULL
        ["total_sales"]=>
        string(1) "0"
        ["tax_status"]=>
        string(7) "taxable"
        ["tax_class"]=>
        string(0) ""
        ["manage_stock"]=>
        bool(false)
        ["stock_quantity"]=>
        NULL
        ["stock_status"]=>
        string(7) "instock"
        ["backorders"]=>
        string(2) "no"
        ["sold_individually"]=>
        bool(false)
        ["weight"]=>
        string(0) ""
        ["length"]=>
        string(0) ""
        ["width"]=>
        string(0) ""
        ["height"]=>
        string(0) ""
        ["upsell_ids"]=>
        array(0) {
        }
        ["cross_sell_ids"]=>
        array(0) {
        }
        ["parent_id"]=>
        int(0)
        ["reviews_allowed"]=>
        bool(true)
        ["purchase_note"]=>
        string(0) ""
        ["attributes"]=>
        array(0) {
        }
        ["default_attributes"]=>
        array(0) {
        }
        ["menu_order"]=>
        int(0)
        ["virtual"]=>
        bool(false)
        ["downloadable"]=>
        bool(false)
        ["category_ids"]=>
        array(0) {
        }
        ["tag_ids"]=>
        array(0) {
        }
        ["shipping_class_id"]=>
        int(0)
        ["downloads"]=>
        array(0) {
        }
        ["image_id"]=>
        string(0) ""
        ["gallery_image_ids"]=>
        array(0) {
        }
        ["download_limit"]=>
        int(-1)
        ["download_expiry"]=>
        int(-1)
        ["rating_counts"]=>
        array(0) {
        }
        ["average_rating"]=>
        int(0)
        ["review_count"]=>
        int(0)
      }
      ["data_store":protected]=>
      object(WC_Data_Store)#8807 (4) {
        ["instance":"WC_Data_Store":private]=>
        object(WC_Product_Data_Store_CPT)#8806 (5) {
          ["internal_meta_keys":protected]=>
          array(39) {
            [0]=>
            string(11) "_visibility"
            [1]=>
            string(4) "_sku"
            [2]=>
            string(6) "_price"
            [3]=>
            string(14) "_regular_price"
            [4]=>
            string(11) "_sale_price"
            [5]=>
            string(22) "_sale_price_dates_from"
            [6]=>
            string(20) "_sale_price_dates_to"
            [7]=>
            string(11) "total_sales"
            [8]=>
            string(11) "_tax_status"
            [9]=>
            string(10) "_tax_class"
            [10]=>
            string(13) "_manage_stock"
            [11]=>
            string(6) "_stock"
            [12]=>
            string(13) "_stock_status"
            [13]=>
            string(11) "_backorders"
            [14]=>
            string(18) "_sold_individually"
            [15]=>
            string(7) "_weight"
            [16]=>
            string(7) "_length"
            [17]=>
            string(6) "_width"
            [18]=>
            string(7) "_height"
            [19]=>
            string(11) "_upsell_ids"
            [20]=>
            string(14) "_crosssell_ids"
            [21]=>
            string(14) "_purchase_note"
            [22]=>
            string(19) "_default_attributes"
            [23]=>
            string(19) "_product_attributes"
            [24]=>
            string(8) "_virtual"
            [25]=>
            string(13) "_downloadable"
            [26]=>
            string(9) "_featured"
            [27]=>
            string(19) "_downloadable_files"
            [28]=>
            string(16) "_wc_rating_count"
            [29]=>
            string(18) "_wc_average_rating"
            [30]=>
            string(16) "_wc_review_count"
            [31]=>
            string(22) "_variation_description"
            [32]=>
            string(13) "_thumbnail_id"
            [33]=>
            string(11) "_file_paths"
            [34]=>
            string(22) "_product_image_gallery"
            [35]=>
            string(16) "_product_version"
            [36]=>
            string(12) "_wp_old_slug"
            [37]=>
            string(10) "_edit_last"
            [38]=>
            string(10) "_edit_lock"
          }
          ["extra_data_saved":protected]=>
          bool(false)
          ["updated_props":protected]=>
          array(0) {
          }
          ["meta_type":protected]=>
          string(4) "post"
          ["object_id_field_for_meta":protected]=>
          string(0) ""
        }
        ["stores":"WC_Data_Store":private]=>
        array(18) {
          ["coupon"]=>
          string(24) "WC_Coupon_Data_Store_CPT"
          ["customer"]=>
          string(22) "WC_Customer_Data_Store"
          ["customer-download"]=>
          string(31) "WC_Customer_Download_Data_Store"
          ["customer-session"]=>
          string(30) "WC_Customer_Data_Store_Session"
          ["order"]=>
          string(23) "WC_Order_Data_Store_CPT"
          ["order-refund"]=>
          string(30) "WC_Order_Refund_Data_Store_CPT"
          ["order-item…

我的问题:

  • 可能发生什么事?
  • 为什么我会丢失这么多数据?
  • 如何获取缺失的数据?

1 个答案:

答案 0 :(得分:2)

您正在丢失["data"],因为您可以看到 WC_product 对象,您可以直接访问数据,因为woocommerce 3 +。

之后的所有其他数据都受到保护,因此您也无法获取。

所以你需要以这种方式使用foreach循环:

// iterating through each cart items
foreach ( WC()->cart->get_cart() as $item_key => $item_values ){

    // We set the cart item data in an array
    $wc_get_cart[$item_key] = $item_values;

    // We remove the WC_Product object from this array
    unset($wc_get_cart[$item_key]['data']);

    // We set the data with WC_Data get_data() method in a variable (array)
    $product_data = $item_values['data']->get_data();

    // We set back this data
    $wc_get_cart[$item_key]['data'] = $product_data;

}

现在您可以序列化 $wc_get_cart 多维数组,您将看到所有需要的数据

  

因此,您可以使用WC_Data get_data()方法转换数组中的订单产品等WooCommerce对象,然后在不使用类方法的情况下访问属性。< / p>