通过 WooCommerce WC_Order_Query 通过元数据获取订单

OhM*_*Mad 1 php wordpress orders query-variables woocommerce

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

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

wc_get_orders( array( 'number' => '1000' ) );
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。

谢谢!

Loi*_*tec 5

订单号功能实际上是通过 WooCommerce\xe2\x80\xa6 中的第三方插件启用的。然后在这种情况下,数据库表meta_key中存在一个新的WooCommerce 帖子类型,即.wp_postmetashop_order_order_number

\n

wc_get_orders() 因此,在使用(in a WC_Order_Query)时,默认情况下该参数不存在。

\n

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

\n
add_filter( \'woocommerce_order_data_store_cpt_get_orders_query\', \'handle_order_number_custom_query_var\', 10, 2 );\nfunction handle_order_number_custom_query_var( $query, $query_vars ) {\n    if ( ! empty( $query_vars[\'number\'] ) ) {\n        $query[\'meta_query\'][] = array(\n            \'key\' => \'_order_number\',\n            \'value\' => esc_attr( $query_vars[\'number\'] ),\n        );\n    }\n\n    return $query;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n
$order = wc_get_orders( array( \'number\' => 1000 ) );\n
Run Code Online (Sandbox Code Playgroud)\n
\n

请参阅文档: 在 WC_Order_Query 中添加自定义参数支持

\n