通过 WooCommerce WC_Order_Query 按元数据获取订单 [英] Get orders by meta data via 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_key
wp_postmetashop_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屋!