BP_User_Query::do_user_ids_query()
Query for IDs of users that match the query parameters.
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
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'] ); } if ( is_array( $this->uid_clauses['orderby'] ) ) { $orderby_multiple = array(); foreach ( $this->uid_clauses['orderby'] as $part ) { $orderby_multiple[] = $part[0] . ' ' . $part[1];//column_name DESC/ASC } $this->uid_clauses['orderby'] = "ORDER BY " . implode( ', ', $orderby_multiple ); $this->uid_clauses['order'] = ""; } // 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 BuddyPress 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
Version | Description |
---|---|
BuddyPress 1.7.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.