如何解决尝试从订单商品中获取产品差异对象时出现的问题
在WooCommerce上,我试图获取产品的变体名称。 但是我收到消息错误:调用未定义的函数wc_get_product()。 下面是代码:(此代码所在的文件来自向服务器发出某些请求的应用程序,因此它不在根目录上。)
$order_items = $order_data->line_items;
foreach ($order_items as $order_item) {
if ($order_item->product_id == $product_id) {
// Get variation if any
$variation_id = $order_item->variation_id;
$variation_name = wc_get_product($variation_id);
$variation_name->get_formatted_name();
if (empty($variation_id)) $variation_id = 0;
$variation_prop = $product['variations'][$variation_id];
}
}
感谢您的帮助。
编辑2: $ order_data是这样获得的:
try {
$woocommerce = new Client($f3->get('wprestbaseurl'),$f3->get('wprestconsumer_key'),$f3->get('wpconsumer_secret'),['wp_api' => true,'version' => 'wc/v3','query_string_auth' => (0 === strpos(strtolower($f3->get('wprestbaseurl')),'https://'))]);
// Retrieve given order meta data
// System IDs are stored into the "xlspadlock_activations" custom field for each order.
$order_data = $woocommerce->get("orders/$customer_order_id");
}
catch{....
解决方法
更新3
更新和注释后,似乎您正在外部文件上使用某些Rest API,WooCommerce类和方法将无法工作,如果尝试使用它们,则会引发错误。
初始答案:
自WooCommerce 3以来,您的代码存在一些错误,因为无法直接访问订单项和产品属性。
改为使用WC_Order_Item_Product
get product_id()
,get_variation_id()
and get_product()
方法,如下所示:
$order_items = $order->get_items(); // Get order items
// Loop through order items
foreach ( $order_items as $item) {
// Check for specific product Id and only for product variation items
if ( in_array( $product_id,array($item->get product_id(),$item->get variation_id() ) ) && $item->get variation_id() > 0 ) {
// Get product variation object
$product_variation = $item->get_product();
// Get the product variation formatted name
$formatted_name = $product_variation->get_formatted_name();
// ...
}
}
相关线程:
注释:在订单商品上,当商品为产品变体时,方法get product_id()
是父变量产品ID,方法get_product()
给出产品变体实例对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。