WC_Customer_Data_Store::get_total_spent()
Return how much money this customer has spent.
Method of the class: WC_Customer_Data_Store{}
Hooks from the method
Return
float
.
Usage
$WC_Customer_Data_Store = new WC_Customer_Data_Store(); $WC_Customer_Data_Store->get_total_spent( $customer );
- $customer(WC_Customer) (required) (passed by reference — &)
- Customer object.
Changelog
Since 3.0.0 | Introduced. |
WC_Customer_Data_Store::get_total_spent() WC Customer Data Store::get total spent code WC 9.4.2
public function get_total_spent( &$customer ) { $spent = apply_filters( 'woocommerce_customer_get_total_spent', Users::get_site_user_meta( $customer->get_id(), 'wc_money_spent', true ), $customer ); if ( '' === $spent ) { global $wpdb; $statuses = array_map( 'esc_sql', wc_get_is_paid_statuses() ); $statuses_sql = "( 'wc-" . implode( "','wc-", $statuses ) . "' )"; //phpcs:disable WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQL.InterpolatedNotPrepared if ( $this->is_cot_in_use() ) { $sql = $wpdb->prepare( 'SELECT SUM(total_amount) FROM ' . OrdersTableDataStore::get_orders_table_name() . " WHERE customer_id = %d AND status in $statuses_sql", $customer->get_id() ); } else { $sql = "SELECT SUM(meta2.meta_value) FROM $wpdb->posts as posts LEFT JOIN {$wpdb->postmeta} AS meta ON posts.ID = meta.post_id LEFT JOIN {$wpdb->postmeta} AS meta2 ON posts.ID = meta2.post_id WHERE meta.meta_key = '_customer_user' AND meta.meta_value = '" . esc_sql( $customer->get_id() ) . "' AND posts.post_type = 'shop_order' AND posts.post_status IN $statuses_sql AND meta2.meta_key = '_order_total'"; } //phpcs:disable WooCommerce.Commenting.CommentHooks.MissingSinceComment /** * Filters the SQL query used to get the combined total of all the orders from a given customer. * * @param string The SQL query to use. * @param WC_Customer The customer to get the total spent for. * @return string The actual SQL query to use. */ $sql = apply_filters( 'woocommerce_customer_get_total_spent_query', $sql, $customer ); //phpcs:enable WooCommerce.Commenting.CommentHooks.MissingSinceComment $spent = $wpdb->get_var( $sql ); //phpcs:enable WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQL.InterpolatedNotPrepared if ( ! $spent ) { $spent = 0; } Users::update_site_user_meta( $customer->get_id(), 'wc_money_spent', $spent ); } return wc_format_decimal( $spent, 2 ); }