WooCommerce HPOS:从项目 ID 获取项目对象

问题描述 投票:0回答:1

当启用高性能订单存储时,我尝试从项目 ID 获取订单项目对象。订单对象和商品对象都是未知的。订单 ID 也不知道。仅知道订单商品 ID。

我发现了这个功能:

$item = wc_get_order_id_by_order_item_id($item_id);

但它可能不兼容 HPOS,因为它不起作用。

有人可以提供从商品ID获取订单商品对象的方法吗?

我希望它是一行而不是循环运行,因为这是分析许多订单项的自定义代码。

php woocommerce orders
1个回答
0
投票

函数

wc_get_order_id_by_order_item_id()
允许通过订单商品 ID 获取 订单 ID但不能获取订单商品对象。此功能与高性能订单存储(HPOS)兼容。

因此,您需要添加一些内容来从商品 ID 中获取订单商品对象。下面您将找到一个可以完成这项工作的自定义轻量级函数:

/**
 * Get the Order Item Object from the order item ID.
 *
 * @param  int $item_id Item ID.
 *
 * @return int or null
 */
function wc_get_order_item_object_by_item_id( $item_id ) {
    $order_id = wc_get_order_id_by_order_item_id($item_id);
    $order    = wc_get_order($order_id);
    if ( ! is_a($order, 'WC_Order') ) {
        return null;
    }
    $order_items = $order->get_items();
    return isset($order_items[$item_id]) ? $order_items[$item_id] : null;
}

代码位于子主题的functions.php文件中(或插件中)。

© www.soinside.com 2019 - 2024. All rights reserved.