BBP_User_Query
Extension of WP_User_Query to allow easy looping
Description Description
Source Source
File: includes/users/template.php
class BBP_User_Query extends WP_User_Query { /** * The amount of users for the current query. * * @since 2.6.0 bbPress (r6330) * @access public * @var int */ public $user_count = 0; /** * Index of the current item in the loop. * * @since 2.6.0 bbPress (r6330) * @access public * @var int */ public $current_user = -1; /** * Whether the loop has started and the caller is in the loop. * * @since 2.6.0 bbPress (r6330) * @access public * @var bool */ public $in_the_loop = false; /** * The current user. * * @since 2.6.0 bbPress (r6330) * @access public * @var WP_User */ public $user; /** * PHP5 constructor. * * @since 2.6.0 bbPress (r6330) * @access public * * @param null|string|array $query Optional. The query variables. */ public function __construct( $query = null ) { if ( ! empty( $query ) ) { parent::__construct( $query ); $this->user_count = count( $this->results ); } } /** * Set up the next user and iterate current user index. * * @since 2.6.0 bbPress (r6330) * @access public * * @return WP_User Next user. */ public function next_user() { $this->current_user++; $this->user = $this->results[ $this->current_user ]; return $this->user; } /** * Sets up the current user. * * Retrieves the next user, sets up the user, sets the 'in the loop' * property to true. * * @since 2.6.0 bbPress (r6330) * @access public * * @global WP_User $user */ public function the_user() { $this->in_the_loop = true; // loop has just started if ( $this->current_user === -1 ) { /** * Fires once the loop is started. * * @since 2.6.0 bbPress (r6330) * * @param WP_Query &$this The WP_Query instance (passed by reference). */ do_action_ref_array( 'loop_start', array( &$this ) ); } $this->next_user(); } /** * Determines whether there are more users available in the loop. * * Calls the {@see 'loop_end'} action when the loop is complete. * * @since 2.6.0 bbPress (r6330) * @access public * * @return bool True if users are available, false if end of loop. */ public function have_users() { if ( ( $this->current_user + 1 ) < $this->user_count ) { return true; } elseif ( ( ( $this->current_user + 1 ) === $this->user_count ) && ( $this->user_count > 0 ) ) { /** * Fires once the loop has ended. * * @since 2.6.0 bbPress (r6330) * * @param WP_Query &$this The WP_Query instance (passed by reference). */ do_action_ref_array( 'loop_end', array( &$this ) ); // Do some cleaning up after the loop $this->rewind_users(); } $this->in_the_loop = false; return false; } /** * Rewind the users and reset user index. * * @since 2.6.0 bbPress (r6330) * @access public */ public function rewind_users() { $this->current_user = -1; if ( $this->user_count > 0 ) { $this->user = $this->results[ 0 ]; } } }
Changelog Changelog
Version | Description |
---|---|
2.6.0 | Introduced. |
Methods Methods
- __construct — PHP5 constructor.
- have_users — Determines whether there are more users available in the loop.
- next_user — Set up the next user and iterate current user index.
- rewind_users — Rewind the users and reset user index.
- the_user — Sets up the current user.