我正在尝试根据选定的产品差异属性获取特定订单的列表。这是我试图在PHP中使用Woocommerce函数所做的SQL等效:
SELECT * FROM wp_woocommerce_order_items LEFT JOIN wp_woocommerce_order_itemmeta
ON wp_woocommerce_order_items.order_item_id = wp_woocommerce_order_itemmeta.order_item_id
WHERE wp_woocommerce_order_itemmeta.meta_key = "size" AND wp_woocommerce_order_itemmeta.meta_value = "A2"
(well,不完全是,因为我想检索一个列表,每个完整的顺序对象匹配的 meta数据,但你明白的想法)。
SQL查询返回以下结果:
基于这里找到的文档,我将其翻译成以下PHP代码:
/**
* Handle a custom 'customvar' query var to get orders with the 'customvar' meta.
* @param array $query - Args for WP_Query.
* @param array $query_vars - Query vars from WC_Order_Query.
* @return array modified $query
*/
function handle_custom_query_var( $query, $query_vars ) {
if ( ! empty( $query_vars['size'] ) ) {
$query['meta_query'][] = array(
'key' => 'size',
'value' => esc_attr( $query_vars['size'] ),
);
}
return $query;
}
add_filter( 'woocommerce_order_data_store_cpt_get_orders_query', 'handle_custom_query_var', 10, 2 );
function woocommerce_orders_export()
{
$orders = wc_get_orders(array('size' => 'A2'));
}
我觉得我错过了什么。上面代码的结果是一个空数组(var_dump($orders);
返回array(0){}
)
1条答案
按热度按时间42fyovps1#
这里有一个更快更好的解决方案。
创建一个函数,通过参数获取所有订单
使用方法:
这里有一个解决方案与过滤器你尝试过