在Woocommerce 3中访问WC_Product保护的数据

Lat*_*lla 2 php wordpress class object woocommerce

我有这个答案供参考:Woocommerce通过ID获取产品价值 …它与wc_get_product()返回受保护数据的功能有关。

该函数的getter方法在哪里定义?
我如何访问内部受保护的数据wc_get_product()

这个Answer线程告诉您WC_Product_Factory正在使用该类。可以扩展此类以访问内部的受保护数据wc_get_product()吗?

wc_get_product()似乎是一个功能,但它是如何返回一个对象?

Loi*_*tec 5

wc_get_product( $product_id)函数提供了WC_Product实例对象(来自产品ID),根据产品类型,可以使用所有可用WC_Product方法WC_Product子类访问数据:

// Get the instance of the WC_Product Object
$product = wc_get_product( $product_id);

// Using `WC_Product` methods examples to get specific related data values:

$product_type  = $product->get_type(); // product Type
$product_id    = $product->get_id(); // product ID
$product_name  = $product->get_name(); // product name
$product_sku   = $product->get_sku(); // product SKU
$product_price = $product->get_price(); // product price

// And so on…

// The raw display of the object protected data (Just for testing)
echo '<pre>'; print_r( $product ); echo '</pre>';
Run Code Online (Sandbox Code Playgroud)

您可以使用将为您提供数据可访问数组的WC_Data方法get_data()来取消保护数据:

// Get the instance of the WC_Product Object
$product = wc_get_product( $product_id);

// Get the accessible array of product properties:
$data = $product->get_data();

// get specific related data values:

$product_id    = $data['id']; // product ID
$product_name  = $data['name']; // product name
$product_sku   = $data['sku']; // product SKU
$product_price = $data['price']; // product price

// And so on…

// The raw display of the unprotected data array (Just for testing)
echo '<pre>'; print_r( $data ); echo '</pre>';
Run Code Online (Sandbox Code Playgroud)

对于特定的自定义元数据,可以使用WC_Data方法get_meta()。因此,例如,如果自定义元键是_custom_height您将使用:

$custom_product_height = $product->get_meta( '_custom_height' );
Run Code Online (Sandbox Code Playgroud)

Woocommerce API官方文档: