BP_User_Query::do_wp_user_query()
Use WP_User_Query() to pull data for the user IDs retrieved in the main query.
Description
Source
File: bp-core/classes/class-bp-user-query.php
public function do_wp_user_query() { $fields = array( 'ID', 'user_login', 'user_pass', 'user_nicename', 'user_email', 'user_url', 'user_registered', 'user_activation_key', 'user_status', 'display_name' ); if ( is_multisite() ) { $fields[] = 'spam'; $fields[] = 'deleted'; } /** * Filters the WP User Query arguments before passing into the class. * * @since BuddyPress 1.7.0 * * @param array $value Array of arguments for the user query. * @param BP_User_Query $this Current BP_User_Query instance. */ $wp_user_query = new WP_User_Query( apply_filters( 'bp_wp_user_query_args', array( // Relevant. 'fields' => $fields, 'include' => $this->user_ids, // Overrides 'blog_id' => 0, // BP does not require blog roles. 'count_total' => false // We already have a count. ), $this ) ); // We calculate total_users using a standalone query, except // when a whitelist of user_ids is passed to the constructor. // This clause covers the latter situation, and ensures that // pagination works when querying by $user_ids. if ( empty( $this->total_users ) ) { $this->total_users = count( $wp_user_query->results ); } // Reindex for easier matching. $r = array(); foreach ( $wp_user_query->results as $u ) { $r[ $u->ID ] = $u; } // Match up to the user ids from the main query. foreach ( $this->user_ids as $key => $uid ) { if ( isset( $r[ $uid ] ) ) { $r[ $uid ]->ID = (int) $uid; $r[ $uid ]->user_status = (int) $r[ $uid ]->user_status; $this->results[ $uid ] = $r[ $uid ]; // The BP template functions expect an 'id' // (as opposed to 'ID') property. $this->results[ $uid ]->id = (int) $uid; // Remove user ID from original user_ids property. } else { unset( $this->user_ids[ $key ] ); } } }
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.