Index: query.php
===================================================================
--- query.php	(revision 11938)
+++ query.php	(working copy)
@@ -1486,8 +1486,12 @@
 			}
 		}
 
-		if ( !empty($qv['post_type']) )
-			$qv['post_type'] = sanitize_user($qv['post_type'], true);
+		if ( !empty($qv['post_type']) )	{
+			if(is_array($qv['post_type']))
+				$qv['post_type'] = array_map('sanitize_user', $qv['post_type'], array(true));
+			else
+				$qv['post_type'] = sanitize_user($qv['post_type'], true);
+		}
 
 		if ( !empty($qv['post_status']) )
 			$qv['post_status'] = preg_replace('|[^a-z0-9_,-]|', '', $qv['post_status']);
@@ -2072,6 +2076,12 @@
 
 		if ( 'any' == $post_type ) {
 			$where .= " AND $wpdb->posts.post_type != 'revision'";
+		} elseif ( !empty( $post_type ) && is_array( $post_type ) && count($post_type) > 0) {
+			$types_where = array();
+			foreach($post_type as $type) {
+				$types_where[] = " $wpdb->posts.post_type = '$type'";
+			}
+			$where .= ' AND ('.join(' OR', $types_where).')';
 		} elseif ( ! empty( $post_type ) ) {
 			$where .= " AND $wpdb->posts.post_type = '$post_type'";
 		} elseif ( $this->is_attachment ) {
