Title: multisite network admin improved user search
Last modified: August 20, 2016

---

# multisite network admin improved user search

 *  [msenate](https://wordpress.org/support/users/msenate/)
 * (@msenate)
 * [13 years, 7 months ago](https://wordpress.org/support/topic/multisite-network-admin-improved-user-search/)
 * I started working on an extension of this plugin to WP Multisite, but have not
   gotten too far. I reset the options page as a subpage instead, and attempted 
   to implement a naive search improvement based on this: [http://wordpress.org/support/topic/using-user-search?replies=23#post-2131280](http://wordpress.org/support/topic/using-user-search?replies=23#post-2131280)
 * However, I did not see results. Would be interested in properly porting the single-
   site improvement to the network admin user page, but unsure of how the network
   search query is constructed.
 * Code thus far:
 *     ```
       <?php
       /*
       Plugin Name: Improved User Search in Backend
       Plugin URI: http://www.blackbam.at/blackbams-blog/2011/06/27/wordpress-improved-user-search-first-name-last-name-email-in-backend/
       Description:  Improves the search for users in the backend significantly: Search for first name, last, email and more of users instead of only nicename.
       Version: 1.2.3
       Author: David Stöckl
       Author URI: http://www.blackbam.at/
       */
   
       /* version check */
       global $wp_version;
   
       if(version_compare($wp_version,"3.0","<")) {
       	exit('Improved User Search in Backend requires WordPress version 3.0 or higher. <a href="http://codex.wordpress.org/Upgrading_Wordpress">Please update!</a>');
       }
   
       // all of this is only for admin interface, is_admin does not check for admin user role
       if( is_admin() ) {
   
       	// add the overwrite actions for the search
       	if (!is_network_admin() ) {
       		add_action('pre_user_query', 'user_search_by_multiple_parameters');
       	}
       	/*if ( is_network_admin() ) {
       		add_action('pre_user_query', 'network_user_search_by_multiple_parameters');
       	}*/
   
       	// add the backend menu page
       	if (!is_network_admin() ) {
       		add_action('admin_menu','improved_user_search_in_backend_options');
       	}
       	/*if ( is_network_admin() ) {
       		add_action('network_admin_menu','improved_user_search_in_backend_network_options');
       	}*/
   
         // network search improvement option
       /*  function network_user_search_by_multiple_parameters($wp_user_query) {
       	echo "Hello three";
       	if(false === strpos($wp_user_query->query_where, '@') && !empty($_GET["s"])) {
       		$wp_user_query->query_where = str_replace(
       		"user_nicename LIKE '%".mysql_real_escape_string($_GET["s"])."%'",
       		"user_nicename LIKE '%".mysql_real_escape_string($_GET["s"])."%'
       		OR user_login LIKE '%".mysql_real_escape_string($_GET["s"])."%'
       		OR display_name LIKE '%".mysql_real_escape_string($_GET["s"])."%'
       		OR user_email LIKE '%".mysql_real_escape_string($_GET["s"])."%'", $wp_user_query->query_where);
       	}
       	return $wp_user_query;
         } */
   
         // the actual improvement of the query
           function user_search_by_multiple_parameters($wp_user_query) {
               if(false === strpos($wp_user_query->query_where, '@') && !empty($_GET["s"])) {
   
                   global $wpdb;
   
                   $uids=array();
   
       			// get the custom meta fields to search
       			$iusib_custom_meta = get_option('iusib_meta_fields');
       			$iusib_cma = explode(",",$iusib_custom_meta);
   
       			$iusib_add = "";
       			// the escaped query string
       			$qstr = mysql_real_escape_string($_GET["s"]);
   
       			// add all custom fields into the query
       			if(!empty($iusib_cma)) {
       				$iusib_add = " OR meta_key='".implode("' OR meta_key='",$wpdb->escape($iusib_cma))."'";
       			}
   
                   $usermeta_affected_ids = $wpdb->get_results("SELECT DISTINCT user_id FROM $wpdb->usermeta WHERE (meta_key='first_name' OR meta_key='last_name'".$iusib_add.") AND LOWER(meta_value) LIKE '%".$qstr."%'");
   
                   foreach($usermeta_affected_ids as $maf) {
                       array_push($uids,$maf->user_id);
                   }
   
                   $users_affected_ids = $wpdb->get_results("SELECT DISTINCT ID FROM $wpdb->users WHERE LOWER(user_nicename) LIKE '%".$qstr."%' OR LOWER(user_email) LIKE '%".$qstr."%'");
   
                   foreach($users_affected_ids as $maf) {
                       if(!in_array($maf->ID,$uids)) {
                           array_push($uids,$maf->ID);
                       }
                   }
   
                   $id_string = implode(",",$uids);
   
                   $wp_user_query->query_where = str_replace("user_nicename LIKE '%".$qstr."%'", "ID IN(".$id_string.")", $wp_user_query->query_where);
               }
               return $wp_user_query;
           }
   
           // add the options page
           function improved_user_search_in_backend_options() {
           	if (!is_network_admin() ) {
       		add_options_page('User Search','User Search',
       	    	'manage_options',__FILE__,'improved_user_search_in_backend_page');
       	}
           }
   
           // add the network options page
       /*    function improved_user_search_in_backend_network_options() {
       	if ( is_network_admin() ) {
       		add_submenu_page('settings.php','User Search','User Search',
                       'manage_options',__FILE__,'improved_user_search_in_backend_page');
       	}
           }*/
   
       	// add the options page
       	function improved_user_search_in_backend_page() { ?>
       		<div class="wrap">
       			<div><?php screen_icon('options-general'); ?></div>
       			<h2>Settings: Improved user search in backend</h2>
       			<?php
       			if(isset($_POST['improved_user_search_in_backend_update']) && $_POST['improved_user_search_in_backend_update']!="") {
   
       				// remove whitespace
       				$sanitized = implode(",",array_map('trim', explode(",",$_POST['iusib_meta_fields'])));
   
       				update_option('iusib_meta_fields',stripslashes($sanitized)); ?>
       					<div id="setting-error-settings_updated" class="updated settings-error">
       						<p><strong><?php _e('Settings saved successfully.','improved-user-search-in-backend'); ?></strong></p>
       					</div>
       			<?php } ?>
       			<form name="improved_user_search_in_backend_update" method="post" action="">
       				<div>
       					<table class="form-table">
       						<tr valign="top">
       							<th scope="row">Custom Meta Fields (comma seperated)</th>
       							<td><textarea name="iusib_meta_fields" rows="6" cols="50"><?php echo get_option('iusib_meta_fields'); ?></textarea></td>
       							<td class="description">Add custom user meta fields from your usermeta table for integration in the user search (e.g. "url", "description", "aim", or custom like "birthday")</td>
       						</tr>
       					</table>
       					<p></p>
       					<p><input type="hidden" name="improved_user_search_in_backend_update" value="true" />
       					<input type="submit" name="Save" value="Save Settings" class="button-primary" /></p>
       				</div>
       			</form>
       		</div>
       	<?php }
       }
   
       register_activation_hook(__FILE__,"improved_user_search_in_backend_activate");
   
       function improved_user_search_in_backend_activate() {
       	register_uninstall_hook(__FILE__,"improved_user_search_in_backend_uninstall");
       }
   
       function improved_user_search_in_backend_uninstall() {
       	// delete all options, tables, ...
       	delete_option('iusib_meta_fields');
       }
   
       ?>
       ```
   
 * [http://wordpress.org/extend/plugins/improved-user-search-in-backend/](http://wordpress.org/extend/plugins/improved-user-search-in-backend/)

Viewing 4 replies - 1 through 4 (of 4 total)

 *  Plugin Author [Blackbam](https://wordpress.org/support/users/blackbam/)
 * (@blackbam)
 * [13 years, 5 months ago](https://wordpress.org/support/topic/multisite-network-admin-improved-user-search/#post-3143005)
 * Hello there
 * maybe I will have a look at your code soon to make a multisite extension, but
   currently this Plugin seems not to be compatible with a multisite installation.
 * BR David
 *  [lkraav](https://wordpress.org/support/users/lkraav/)
 * (@lkraav)
 * [13 years ago](https://wordpress.org/support/topic/multisite-network-admin-improved-user-search/#post-3143022)
 * Totally interested in this, +1 and following
 *  Thread Starter [msenate](https://wordpress.org/support/users/msenate/)
 * (@msenate)
 * [13 years ago](https://wordpress.org/support/topic/multisite-network-admin-improved-user-search/#post-3143023)
 * Excellent, Ikraav, I haven’t had time to jump back into this–but it would be 
   very handy.
 * Blackbam, any possibility of revisiting this for multisite compatibility? Or 
   any insight on network search queries?
 *  Plugin Author [Blackbam](https://wordpress.org/support/users/blackbam/)
 * (@blackbam)
 * [12 years, 9 months ago](https://wordpress.org/support/topic/multisite-network-admin-improved-user-search/#post-3143024)
 * Hello again I think it is possible to create a search like this for multisite
   installations, too, but I think the approach is different. You have to go through
   the WordPress core and probably build a much more complex Plugin which I may 
   do but unfortunatly it is not possible for me in near time.
 * Please tell if you have progress regarding this topic.

Viewing 4 replies - 1 through 4 (of 4 total)

The topic ‘multisite network admin improved user search’ is closed to new replies.

 * ![](https://s.w.org/plugins/geopattern-icon/improved-user-search-in-backend.svg)
 * [Improved user search in backend](https://wordpress.org/plugins/improved-user-search-in-backend/)
 * [Support Threads](https://wordpress.org/support/plugin/improved-user-search-in-backend/)
 * [Active Topics](https://wordpress.org/support/plugin/improved-user-search-in-backend/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/improved-user-search-in-backend/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/improved-user-search-in-backend/reviews/)

## Tags

 * [multisite](https://wordpress.org/support/topic-tag/multisite/)
 * [network admin](https://wordpress.org/support/topic-tag/network-admin/)
 * [user search](https://wordpress.org/support/topic-tag/user-search/)

 * 4 replies
 * 3 participants
 * Last reply from: [Blackbam](https://wordpress.org/support/users/blackbam/)
 * Last activity: [12 years, 9 months ago](https://wordpress.org/support/topic/multisite-network-admin-improved-user-search/#post-3143024)
 * Status: not resolved