获取Woocommerce复合产品组件

时间:2017-12-10 22:36:10

标签: wordpress woocommerce

我正在使用Woocommerce与Woocommerce Composite Products扩展(允许您使用其他产品组合制作产品)。

我试图找出复合产品是否“库存”,但通常的功能is_in_stock()不适用于复合材料。

如果有更合适的功能,我想知道它是什么。

Alternatrively,下面的函数'wc_get_product()'返回以下内容,包括componentproduct ID(assigned_ids):

$product = wc_get_product($productid);
var_dump($product);

返回:

object(WC_Product_Composite)#11305 (23) {
  ["extended_data":"WC_Product_Composite":private]=>
  array(7) {
    ["add_to_cart_form_location"]=>
    string(7) "default"
    ["shop_price_calc"]=>
    string(7) "default"
  }
  ["composite_meta":"WC_Product_Composite":private]=>
  array(4) {
    [1477435352]=>
    array(19) {
      ["component_id"]=>
      string(10) "1477435352"
      ["query_type"]=>
      string(11) "product_ids"
      ["assigned_ids"]=>
      array(2) {
        [0]=>
        int(541)
        [1]=>
        int(588)
      }
   }
}

基本上,我想要的是提取并循环遍历'assigned_ids'子阵列,检查每个是否有库存,但除了将其打印到屏幕外,我无法访问此对象的属性,因为它们是“私有的” (我完全不熟悉的东西)。我相信我可以通过在Wordpress /插件文件中搜索类来解决这个问题,但我不知道如何找到它。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

  

股票 (对复合材料产品来说复杂得多)

     

关于复合产品中的库存和库存管理,显然有WC_CP_Stock_ManagerWC_CP_Stock_Manager_Item专用课程,所以它似乎没有经典的方式工作,有一些概念< strong>&#34; items&#34; 和&#34; collections&#34;

     

此方法和功能可在includes/class-wc-cp-stock-manager.php核心文件中找到。

访问数据:

如您所见,要获取WC_Product_Composite对象受保护的属性,您应该使用核心代码类中记录的继承的WC_Product方法或更具体的WC_Product_Composite方法。 / p>

现在,访问(未受保护)数据的最简单方法是使用以下方法继承自WC_Data Class

// Get an instance of the WC_Product_Composite object
$product = wc_get_product( $product_id );

// Get the data in an unprotected array
$product_data = $product->get_data();

// Output the raw data (for test)
echo '<pre>'; print_r( $product_data ); echo '</pre>';

// Get special meta data in an unprotected array (if it exist)
$product_meta_data = $product->get_meta_data();

// Output the raw special meta data (for test)
echo '<pre>'; print_r( $product_meta_data ); echo '</pre>';

或者你也可以使用一些WC_Product_Composite方法:

// Get an instance of the WC_Product_Composite object
$product = wc_get_product( $product_id );

// Get the component Id
$component_data = $product->get_component_id();

// Get the component
$component_data = $product->get_component();

// Get the raw component data
$component_data = $product->get_component_data();

任何方式您都需要了解核心文件代码,以了解工作原理并为复合产品获取正确的方法。