get_product_from_item($item) WooCommerce 中弃用的替代品
get_product_from_item($item) deprecated replacement in WooCommerce
我正在尝试修复此 unsupported SagePay plugin 中一些已弃用的功能。
如何在 WooCommerce 中替换以下已弃用代码片段?
foreach ($order->get_items() as $item) {
if ($item['qty']) {
$product = $order->get_product_from_item($item);
我可以看到这是它的替代品:
@deprecated Add deprecation notices in future release. Replaced with $item->get_product()
但简单地将其更改为 $product = $item->get_product();
是行不通的。我还尝试将该行更改为:
$product = wc_get_product($item['id']);
但是它会在结帐期间导致内部服务器错误。
您可以在 WC_Order
和 WC_Order_Items
对象上使用 WC_data get_data()
方法,方法如下:
// For testing only
$order = wc_get_order(500);
// Iterate though each order item
foreach ($order->get_items() as $item_id => $item) {
// Get the WC_Order_Item_Product object properties in an array
$item_data = $item->get_data();
if ($item['quantity'] > 0) {
// get the WC_Product object
$product = wc_get_product($item['product_id']);
// test output
print_r($product);
}
}
或使用 WC_Order_Item_Product get_product_id()
方法:
// For testing only
$order = wc_get_order(500);
// Iterate though each order item
foreach ($order->get_items() as $item_id => $item) {
if( $item->get_quantity() > 0 ){
// Get the product id from WC_Order_Item_Product object
$product_id = $item->get_product_id();
// get the WC_Product object
$product = wc_get_product($item['product_id']);
// test output
print_r($product);
}
}
所有这些都在活动主题 php 文件中工作。
When testing in the theme php files I can get the WC_Product
object with $item->get_product();
相关回答:
我正在尝试修复此 unsupported SagePay plugin 中一些已弃用的功能。
如何在 WooCommerce 中替换以下已弃用代码片段?
foreach ($order->get_items() as $item) {
if ($item['qty']) {
$product = $order->get_product_from_item($item);
我可以看到这是它的替代品:
@deprecated Add deprecation notices in future release. Replaced with
$item->get_product()
但简单地将其更改为 $product = $item->get_product();
是行不通的。我还尝试将该行更改为:
$product = wc_get_product($item['id']);
但是它会在结帐期间导致内部服务器错误。
您可以在 WC_Order
和 WC_Order_Items
对象上使用 WC_data get_data()
方法,方法如下:
// For testing only
$order = wc_get_order(500);
// Iterate though each order item
foreach ($order->get_items() as $item_id => $item) {
// Get the WC_Order_Item_Product object properties in an array
$item_data = $item->get_data();
if ($item['quantity'] > 0) {
// get the WC_Product object
$product = wc_get_product($item['product_id']);
// test output
print_r($product);
}
}
或使用 WC_Order_Item_Product get_product_id()
方法:
// For testing only
$order = wc_get_order(500);
// Iterate though each order item
foreach ($order->get_items() as $item_id => $item) {
if( $item->get_quantity() > 0 ){
// Get the product id from WC_Order_Item_Product object
$product_id = $item->get_product_id();
// get the WC_Product object
$product = wc_get_product($item['product_id']);
// test output
print_r($product);
}
}
所有这些都在活动主题 php 文件中工作。
When testing in the theme php files I can get the
WC_Product
object with$item->get_product();
相关回答: