Automattic\WooCommerce\Admin\API\Reports\Coupons\Stats
Segmenter::get_order_related_intervals_segments()
Calculate segments for intervals query where the segmenting property is bound to order (e.g. coupon or customer type).
Метод класса: Segmenter{}
Хуков нет.
Возвращает
Массив
.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->get_order_related_intervals_segments( $segmenting_select, $segmenting_from, $segmenting_where, $segmenting_groupby, $table_name, $intervals_query );
- $segmenting_select(строка) (обязательный)
- SELECT part of segmenting SQL query.
- $segmenting_from(строка) (обязательный)
- FROM part of segmenting SQL query.
- $segmenting_where(строка) (обязательный)
- WHERE part of segmenting SQL query.
- $segmenting_groupby(строка) (обязательный)
- GROUP BY part of segmenting SQL query.
- $table_name(строка) (обязательный)
- Name of SQL table which is the stats table for orders.
- $intervals_query(массив) (обязательный)
- Array of SQL clauses for intervals query.
Код Segmenter::get_order_related_intervals_segments() Segmenter::get order related intervals segments WC 7.3.0
protected function get_order_related_intervals_segments( $segmenting_select, $segmenting_from, $segmenting_where, $segmenting_groupby, $table_name, $intervals_query ) { global $wpdb; $limit_parts = explode( ',', $intervals_query['limit'] ); $orig_rowcount = intval( $limit_parts[1] ); $segmenting_limit = $limit_parts[0] . ',' . $orig_rowcount * count( $this->get_all_segments() ); $intervals_segments = $wpdb->get_results( "SELECT MAX($table_name.date_created) AS datetime_anchor, {$intervals_query['select_clause']} AS time_interval, $segmenting_groupby $segmenting_select FROM $table_name $segmenting_from {$intervals_query['from_clause']} WHERE 1=1 {$intervals_query['where_time_clause']} {$intervals_query['where_clause']} $segmenting_where GROUP BY time_interval, $segmenting_groupby $segmenting_limit", ARRAY_A ); // WPCS: cache ok, DB call ok, unprepared SQL ok. // Reformat result. $intervals_segments = $this->reformat_intervals_segments( $intervals_segments, $segmenting_groupby ); return $intervals_segments; }