add_filter( 'query', 'mycustom_query_alter' ); function mycustom_query_alter( $query ) { global $wpdb; // Try to go into HyperDB settings to find DB name of shared users DB // The dataset is named "users" if (!empty($wpdb->hyper_servers['users'])) { if (!empty($wpdb->hyper_servers['users']['read'][1][0]['name'])) { $users_db = $wpdb->hyper_servers['users']['read'][1][0]['name']; } else { // We didn't find a users table in HyperDB, so we'll default to a standard one $users_db = 'wp_users'; } // If the query references both $wpdb->users and $wpdb->usermeta tables, prefix the users table with correct database name if (FALSE !== strpos($query, $wpdb->users) && FALSE !== strpos($query, $wpdb->usermeta)) { $query = str_replace($wpdb->users, $users_db . '.' . $wpdb->users, $query); } } return $query; }