Title: WP_User_Search::prepare_query
Published: April 25, 2014
Last modified: May 20, 2026

---

# WP_User_Search::prepare_query()

## In this article

 * [Source](https://developer.wordpress.org/reference/classes/wp_user_search/prepare_query/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wp_user_search/prepare_query/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_user_search/prepare_query/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_user_search/prepare_query/?output_format=md#wp--skip-link--target)

Prepares the user search query (legacy).

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_user_search/prepare_query/?output_format=md#source)󠁿

    ```php
    public function prepare_query() {
    	global $wpdb;
    	$this->first_user = ($this->page - 1) * $this->users_per_page;

    	$this->query_limit = $wpdb->prepare(" LIMIT %d, %d", $this->first_user, $this->users_per_page);
    	$this->query_orderby = ' ORDER BY user_login';

    	$search_sql = '';
    	if ( $this->search_term ) {
    		$searches = array();
    		$search_sql = 'AND (';
    		foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col )
    			$searches[] = $wpdb->prepare( $col . ' LIKE %s', '%' . like_escape($this->search_term) . '%' );
    		$search_sql .= implode(' OR ', $searches);
    		$search_sql .= ')';
    	}

    	$this->query_from = " FROM $wpdb->users";
    	$this->query_where = " WHERE 1=1 $search_sql";

    	if ( $this->role ) {
    		$this->query_from .= " INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id";
    		$this->query_where .= $wpdb->prepare(" AND $wpdb->usermeta.meta_key = '{$wpdb->prefix}capabilities' AND $wpdb->usermeta.meta_value LIKE %s", '%' . $this->role . '%');
    	} elseif ( is_multisite() ) {
    		$level_key = $wpdb->prefix . 'capabilities'; // WPMU site admins don't have user_levels.
    		$this->query_from .= ", $wpdb->usermeta";
    		$this->query_where .= " AND $wpdb->users.ID = $wpdb->usermeta.user_id AND meta_key = '{$level_key}'";
    	}

    	do_action_ref_array( 'pre_user_search', array( &$this ) );
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-admin/includes/deprecated.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-admin/includes/deprecated.php#L531)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-admin/includes/deprecated.php#L531-L561)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_user_search/prepare_query/?output_format=md#related)󠁿

| Uses | Description | 
| [like_escape()](https://developer.wordpress.org/reference/functions/like_escape/)`wp-includes/deprecated.php` |

Formerly used to escape strings before searching the DB. It was poorly documented and never worked as described.

  | 
| [do_action_ref_array()](https://developer.wordpress.org/reference/functions/do_action_ref_array/)`wp-includes/plugin.php` |

Calls the callback functions that have been added to an action hook, specifying arguments in an array.

  | 
| [is_multisite()](https://developer.wordpress.org/reference/functions/is_multisite/)`wp-includes/load.php` |

Determines whether Multisite is enabled.

  | 
| [wpdb::prepare()](https://developer.wordpress.org/reference/classes/wpdb/prepare/)`wp-includes/class-wpdb.php` |

Prepares a SQL query for safe execution.

  |

[Show 2 more](https://developer.wordpress.org/reference/classes/wp_user_search/prepare_query/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wp_user_search/prepare_query/?output_format=md#)

| Used by | Description | 
| [WP_User_Search::__construct()](https://developer.wordpress.org/reference/classes/wp_user_search/__construct/)`wp-admin/includes/deprecated.php` |

PHP5 Constructor – Sets up the object properties.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_user_search/prepare_query/?output_format=md#changelog)󠁿

| Version | Description | 
| [2.1.0](https://developer.wordpress.org/reference/since/2.1.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_user_search%2Fprepare_query%2F)
before being able to contribute a note or feedback.