通过 WooCommerce WC_Order_Query 按元数据获取订单 [英] Get orders by meta data via WooCommerce WC_Order_Query

查看:85
本文介绍了通过 WooCommerce WC_Order_Query 按元数据获取订单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何通过编号(而不是 ID)获取 WooCommerce 订单?

How can I get a WooCommerce order by its number (instead of its ID)?

我尝试将 wc_get_orders 与自定义参数一起使用,例如:

I tried using wc_get_orders with custom args, like:

wc_get_orders( array( 'number' => '1000' ) );

但它似乎不起作用.

谢谢!

推荐答案

订单号功能实际上是通过 WooCommerce 中的第三方插件启用的……那么在这种情况下, 中存在一个新的 meta_keywp_postmeta 数据库表,用于 shop_order WooCommerce 帖子类型,即 _order_number.

Order numbers functionality is really enabled through a third party plugin in WooCommerce… Then in this case a new meta_key exist in wp_postmeta database table for shop_order WooCommerce post type which is _order_number.

所以这个参数在使用 wc_get_orders() 时默认不存在 (在 WC_Order_Query 中).

So this parameter doesn't exist by default when using wc_get_orders() (in a WC_Order_Query).

但是您可以添加/启用number";参数使用以下代码:

But you can add/enable the "number" parameter using the following code:

add_filter( 'woocommerce_order_data_store_cpt_get_orders_query', 'handle_order_number_custom_query_var', 10, 2 );
function handle_order_number_custom_query_var( $query, $query_vars ) {
    if ( ! empty( $query_vars['number'] ) ) {
        $query['meta_query'][] = array(
            'key' => '_order_number',
            'value' => esc_attr( $query_vars['number'] ),
        );
    }

    return $query;
}

代码位于活动子主题(或活动主题)的 functions.php 文件中.经测试有效.

Code goes in functions.php file of your active child theme (or active theme). Tested and works.

现在您可以使用 number 参数通过 WC_Order_Query 从订单号获取订单:

Now you can use number parameter to get an order from it's order number via a WC_Order_Query:

$order = wc_get_orders( array( 'number' => 1000 ) );


参见文档: 在 WC_Order_Query 中添加自定义参数支持.

这篇关于通过 WooCommerce WC_Order_Query 按元数据获取订单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆