通过WooCommerce WC_Order_Query通过订单号获取订单

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

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

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

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

但是它似乎不起作用。

谢谢!

php wordpress woocommerce orders query-variables
1个回答
0
投票

[订单号功能实际上是通过WooCommerce中的第三方插件启用的。然后,在这种情况下,meta_key数据库表中存在wp_postmeta WooCommerce帖子类型为shop_order的新_order_number。>

因此,当使用wc_get_orders()(for aWC_Order_Query )时,默认情况下此参数不存在。>

但是您可以使用以下代码添加/启用“ number”参数

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文件中。经过测试和工作。

现在您可以使用number

参数通过WC_Order_Query从订单号中获取订单:
$order = wc_get_orders( array( 'number' => 1000 ) );
© www.soinside.com 2019 - 2024. All rights reserved.