BP_User_Query::do_user_ids_query()
Query for IDs of users that match the query parameters.
Description Description
Perform a database query to specifically get only user IDs, using existing query variables set previously in the constructor.
Also used to quickly perform user total counts.
Source Source
File: bp-core/classes/class-bp-user-query.php
public function do_user_ids_query() { global $wpdb; // If counting using SQL_CALC_FOUND_ROWS, set it up here. if ( 'sql_calc_found_rows' == $this->query_vars['count_total'] ) { $this->uid_clauses['select'] = str_replace( 'SELECT', 'SELECT SQL_CALC_FOUND_ROWS', $this->uid_clauses['select'] ); } // Get the specific user ids. $this->user_ids = $wpdb->get_col( "{$this->uid_clauses['select']} {$this->uid_clauses['where']} {$this->uid_clauses['orderby']} {$this->uid_clauses['order']} {$this->uid_clauses['limit']}" ); // Get the total user count. if ( 'sql_calc_found_rows' == $this->query_vars['count_total'] ) { /** * Filters the found user SQL statements before query. * * If "sql_calc_found_rows" is the provided count_total query var * then the value will be "SELECT FOUND_ROWS()". Otherwise it will * use a "SELECT COUNT()" query statement. * * @since 1.7.0 * * @param string $value SQL statement to select FOUND_ROWS(). * @param BP_User_Query $this Current BP_User_Query instance. */ $this->total_users = $wpdb->get_var( apply_filters( 'bp_found_user_query', "SELECT FOUND_ROWS()", $this ) ); } elseif ( 'count_query' == $this->query_vars['count_total'] ) { $count_select = preg_replace( '/^SELECT.*?FROM (\S+) u/', "SELECT COUNT(u.{$this->uid_name}) FROM $1 u", $this->uid_clauses['select'] ); /** This filter is documented in bp-core/classes/class-bp-user-query.php */ $this->total_users = $wpdb->get_var( apply_filters( 'bp_found_user_query', "{$count_select} {$this->uid_clauses['where']}", $this ) ); } }
Changelog Changelog
Version | Description |
---|---|
1.7.0 | Introduced. |