WC_Admin_Dashboard::get_sales_sparkline()privateWC 1.0

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() 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,
	);
}