Woocommerce HPOS 订单元存在吗?

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

我们正在努力更新 HPOS 的一些自定义插件。我查看了 https://developer.woocommerce.com/docs/hpos-order-querying-apis/ 寻找答案,但似乎没有。

我正在寻找代码来确定订单元数据是否存在。类似于 metadata_exists().

是否有代码可以确定密钥是否存在于wp_wc_orders_meta表中?

如何确定密钥是否存在于 wp_woocommerce_order_itemmeta 表中?

最后,使用 $order->get_meta('my_stuff') 获取数据的执行速度是否与检查返回的内容一样快?有时,值是 4 或 5 个数据的数组。我认为现在的执行速度如此之快,也许只是获取值也会同样快——内存会增加一点。这些天这不是一个令人担忧的问题吗?你的想法?

if (empty(metadata_exists('post', $order_id, 'some_order_meta_tag'))) {
    $my_metadata_exists = 0;
}
woocommerce meta
1个回答
0
投票

要检查 WooCommerce 订单元数据或订单项元数据,您可以使用现有 WC_Order 对象中的以下

WC_Data
方法(与 HPOS 兼容):

## For order metadata

// check if metadata exists
if ( $order->meta_exist( 'desired_meta_key' ) ) {
   // Do something
}

## For order item metadata

// Get order items (line items)
$line_items = $order->get_items();

// Loop through order items
foreach ( $line_items as $item ) {
    // check if metadata exists
    if ( $order->meta_exist( 'desired_meta_key' ) ) {
       // Do something
    }
}
## For order metadata

// Get specific metadata if it exists and is not empty
if ( $metadata = $order->get_meta( 'desired_meta_key' ) ) {
   // Do something with this existiong $metadata
}

## For order item metadata

// Get order items (line items)
$line_items = $order->get_items();

// Loop through order items
foreach ( $line_items as $item ) {
    // Get specific metadata if it exists and is not empty
    if ( $metadata = $order->get_meta( 'desired_meta_key' ) ) {
       // Do something with this existiong $metadata
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.