WC_Admin_Dashboard::get_sales_sparkline
Prepares the data for a sparkline to show sales in the last X days.
Method of the class: WC_Admin_Dashboard{}
No Hooks.
Returns
Array.
Usage
// private - for code of main (parent) class only $result = $this->get_sales_sparkline( $id, $days, $type );
- $id(int)
- ID of the product to show. Blank to get all orders.
Default: '' - $days(int)
- Days of stats to get.
Default: 7 days - $type(string)
- Type of sparkline to get. Ignored if ID is not set.
Default: 'sales'
WC_Admin_Dashboard::get_sales_sparkline() WC Admin Dashboard::get sales sparkline code WC 10.3.5
private function get_sales_sparkline( $id = '', $days = 7, $type = 'sales' ) {
$sales_endpoint = '/wc-analytics/reports/revenue/stats';
$start_date = gmdate( 'Y-m-d 00:00:00', current_time( 'timestamp' ) - ( ( $days - 1 ) * DAY_IN_SECONDS ) );
$end_date = gmdate( 'Y-m-d 23:59:59', current_time( 'timestamp' ) );
$meta_key = 'net_revenue';
$params = array(
'order' => 'asc',
'interval' => 'day',
'per_page' => 100,
'before' => $end_date,
'after' => $start_date,
);
if ( $id ) {
$sales_endpoint = '/wc-analytics/reports/products/stats';
$meta_key = ( 'sales' === $type ) ? 'net_revenue' : 'items_sold';
$params['products'] = $id;
}
$request = new \WP_REST_Request( 'GET', $sales_endpoint );
$params['fields'] = array( $meta_key );
$request->set_query_params( $params );
$response = rest_do_request( $request );
if ( is_wp_error( $response ) ) {
return $response;
}
$resp_data = $response->get_data();
$data = $resp_data['intervals'];
$sparkline_data = array();
$total = 0;
foreach ( $data as $d ) {
$total += $d['subtotals']->$meta_key;
array_push( $sparkline_data, array( strval( strtotime( $d['interval'] ) * 1000 ), $d['subtotals']->$meta_key ) );
}
return array(
'total' => $total,
'data' => $sparkline_data,
);
}