我需要通过开始日期、最终日期和状态获取 woocommerce 中的订单列表。
我尝试使用一些技术,如 Mike Jolley 所描述的,我和 this 混在一起.但我没有成功。这将返回所有订单。我正在使用 woocommerce 版本 2.2.10。
感谢帮助。
我的代码:
public function get_orders(){
global $json_api;
$initial_date = $json_api->query->para1;
$final_date = $json_api->query->para2;
$order_id = $json_api->query->para3;
$status_order = $json_api->query->para4;
define('GET_ORDERS_FILTER_DATE_FROM', $initial_date );
define('GET_ORDERS_FILTER_DATE_TO', $final_date );
add_filter('posts_where', array( __CLASS__, 'get_orders_where_dates_between') );
$orders = get_posts( array(
'post_type' => 'shop_order',
'orderby' => 'post_date',
'order' => 'DESC',
'post_status' => array_keys( $status_order )
) );
remove_filter('posts_where', 'order_page_get_orders_where_dates_between');
return $orders;
}
function get_orders_where_dates_between( $where ){
global $wpdb;
if( ! defined('GET_ORDERS_FILTER_DATE_FROM') || ! defined('PARCELWARE_GET_ORDERS_FILTER_DATE_TO') )
return $where;
$where .= $wpdb->prepare(" AND post_date >= '%s' ", GET_ORDERS_FILTER_DATE_FROM);
$where .= $wpdb->prepare(" AND post_date <= '%s' ", GET_ORDERS_FILTER_DATE_TO);
return $where;
}
最佳答案
您可以使用 wc_get_orders
$initial_date = yyyy-mm-dd;
$final_date = yyyy-mm-dd;
$orders = wc_get_orders(array(
'limit'=>-1,
'type'=> 'shop_order',
'status'=> array( 'wc-completed','wc-refunded' ),
'date_created'=> $initial_date .'...'. $final_date
)
);
关于php - 按日期和状态获取订单 woocommerce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27972515/