WP_User_Query::query() WordPress Method

The WP_User_Query::query() method is used to query the WordPress user database. It accepts an array of arguments, which can be used to specify the desired search criteria. The results of the query can be accessed via the WP_User_Query::get_results() method.

WP_User_Query::query() #

Executes the query, with the current variables.


Source

File: wp-includes/class-wp-user-query.php

779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
public function query() {
    global $wpdb;
 
    $qv =& $this->query_vars;
 
    /**
     * Filters the users array before the query takes place.
     *
     * Return a non-null value to bypass WordPress' default user queries.
     *
     * Filtering functions that require pagination information are encouraged to set
     * the `total_users` property of the WP_User_Query object, passed to the filter
     * by reference. If WP_User_Query does not perform a database query, it will not
     * have enough information to generate these values itself.
     *
     * @since 5.1.0
     *
     * @param array|null    $results Return an array of user data to short-circuit WP's user query
     *                               or null to allow WP to run its normal queries.
     * @param WP_User_Query $query   The WP_User_Query instance (passed by reference).
     */
    $this->results = apply_filters_ref_array( 'users_pre_query', array( null, &$this ) );
 
    if ( null === $this->results ) {
        $this->request = "
            SELECT {$this->query_fields}
            {$this->query_from}
            {$this->query_where}
            {$this->query_orderby}
            {$this->query_limit}
        ";
 
        if ( is_array( $qv['fields'] ) || 'all' === $qv['fields'] ) {
            $this->results = $wpdb->get_results( $this->request );
        } else {
            $this->results = $wpdb->get_col( $this->request );
        }
 
        if ( isset( $qv['count_total'] ) && $qv['count_total'] ) {
            /**
             * Filters SELECT FOUND_ROWS() query for the current WP_User_Query instance.
             *
             * @since 3.2.0
             * @since 5.1.0 Added the `$this` parameter.
             *
             * @global wpdb $wpdb WordPress database abstraction object.
             *
             * @param string        $sql   The SELECT FOUND_ROWS() query for the current WP_User_Query.
             * @param WP_User_Query $query The current WP_User_Query instance.
             */
            $found_users_query = apply_filters( 'found_users_query', 'SELECT FOUND_ROWS()', $this );
 
            $this->total_users = (int) $wpdb->get_var( $found_users_query );
        }
    }
 
    if ( ! $this->results ) {
        return;
    }
    if (
        is_array( $qv['fields'] ) &&
        isset( $this->results[0]->ID )
    ) {
        foreach ( $this->results as $result ) {
            $result->id = $result->ID;
        }
    } elseif ( 'all_with_meta' === $qv['fields'] ) {
        cache_users( $this->results );
 
        $r = array();
        foreach ( $this->results as $userid ) {
            $r[ $userid ] = new WP_User( $userid, '', $qv['blog_id'] );
        }
 
        $this->results = $r;
    } elseif ( 'all' === $qv['fields'] ) {
        foreach ( $this->results as $key => $user ) {
            $this->results[ $key ] = new WP_User( $user, '', $qv['blog_id'] );
        }
    }
}


Top ↑

Changelog

Changelog
VersionDescription
3.1.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by the Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.