Php 按日期和状态获取订单
我需要得到一个在woocommerce通过开始日期,最终日期和状态的订单列表 我尝试使用一些技术,如所描述的,我与。但我没有成功。这将返回所有订单。我使用的是woocommerce版本2.2.10 谢谢你的帮助 我的代码:Php 按日期和状态获取订单,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我需要得到一个在woocommerce通过开始日期,最终日期和状态的订单列表 我尝试使用一些技术,如所描述的,我与。但我没有成功。这将返回所有订单。我使用的是woocommerce版本2.2.10 谢谢你的帮助 我的代码: public function get_orders(){ global $json_api; $initial_date = $json_api->query->para1; $final_date = $json
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;
}
公共函数获取命令(){
全球$json_api;
$initial\u date=$json\u api->query->para1;
$final\u date=$json\u api->query->para2;
$order\u id=$json\u api->query->para3;
$status\u order=$json\u api->query->para4;
定义('GET_ORDERS_FILTER_DATE_FROM',$initial_DATE);
定义('GET_ORDERS_FILTER_DATE_TO',$final_DATE);
添加过滤器('posts_where',array('u_CLASS_,'get_orders_where_dates_between');
$orders=get_posts(数组)(
“post_type”=>“shop_order”,
'orderby'=>'post_date',
“订单”=>“描述”,
“post_status”=>数组键($status_order)
) );
删除过滤器('posts_where'、'order_page_get_orders_where_dates_between');
退回$orders;
}
函数get\u orders\u where\u dates\u between($where){
全球$wpdb;
如果(!defined(!GET_ORDERS _FILTER _DATE _FROM')| |!defined(!PARCELWARE _GET_ORDERS _FILTER _DATE _TO'))
返回$where;
$where.=$wpdb->prepare(“和post_date>='%s',从中获取_ORDERS_FILTER_date”);
$where.=$wpdb->prepare(“和post_date像这样使用自定义wpdb
查询怎么样
global $wpdb;
$date_from = '2015-11-20';
$date_to = '2015-12-20';
$post_status = implode("','", array('wc-processing', 'wc-completed') );
$result = $wpdb->get_results( "SELECT * FROM $wpdb->posts
WHERE post_type = 'shop_order'
AND post_status IN ('{$post_status}')
AND post_date BETWEEN '{$date_from} 00:00:00' AND '{$date_to} 23:59:59'
");
echo "<pre>";
print_r($result);
global$wpdb;
$date_from='2015-11-20';
$date_to='2015-12-20';
$post_status=内爆(“,”,数组('wc-processing','wc-completed');
$result=$wpdb->get_results(“从$wpdb->posts中选择*
其中post_类型='shop_order'
和({$post_status}'中的post_状态)
和post_date介于{$date_from}00:00:00'和{$date_to}23:59:59'之间
");
回声“;
打印(结果);
您可以使用wc\u获取订单
根据,使用此接口是首选方法。我更喜欢您的解决方案,因为wc_get_orders在搜索日期范围时似乎非常有问题(github关于它的罚单加上我直接的糟糕体验)。
$initial_date = yyyy-mm-dd;
$final_date = yyyy-mm-dd;
wc_get_orders(array(
'limit'=>-1,
'type'=> 'shop_order',
'status'=> array( 'wc-completed','wc-refunded' ),
'date_created'=> $initial_date .'...'. $final_date
)
);