Доступ к защищенным данным WC_Product в Woocommerce 3 - PullRequest
0 голосов
/ 20 октября 2018

У меня есть этот ответ для справки: Woocommerce Получить значения продукта по идентификатору ... Речь идет о функции wc_get_product(), которая возвращает защищенные данные.

Где определены методы получения, определенные для этогофункционировать?
Как я могу получить доступ к защищенным данным внутри wc_get_product()?

Этот поток ответов говорит о том, что используется класс WC_Product_Factory.Можно ли расширить этот класс для доступа к защищенным данным внутри wc_get_product()?

Кажется, что wc_get_product() является функцией, но как он возвращает объект?

1 Ответ

0 голосов
/ 20 октября 2018

Функция wc_get_product( $product_id) дает объект экземпляра WC_Product (из идентификатора продукта) , к которому можно получить доступ ко всем доступным методам WC_Product и WC_Product sub-классы в зависимости от типа продукта:

<code>// 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 '
';

Вы можете снять защиту данных с помощью метода WC_Data get_data(), который предоставит вам доступный массив данных:

<code>// 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 '
';

Для определенных пользовательских метаданных вы можете использовать метод WC_Data get_meta().Поэтому, если пользовательский мета-ключ, например, _custom_height, вы будете использовать:

$custom_product_height = $product->get_meta( '_custom_height' );

Официальная документация API Woocommerce:

...