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.
Return
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 9.5.1
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, ); }