Index: src/wp-includes/class-wp-query.php
===================================================================
--- src/wp-includes/class-wp-query.php	(revision 47787)
+++ src/wp-includes/class-wp-query.php	(working copy)
@@ -811,6 +811,10 @@
 			$this->is_single = true;
 		} elseif ( $qv['p'] ) {
 			$this->is_single = true;
+		} elseif ( ( '' !== $qv['hour'] ) && ( '' !== $qv['minute'] ) && ( '' !== $qv['second'] ) && ( '' != $qv['year'] ) && ( '' != $qv['monthnum'] ) && ( '' != $qv['day'] ) ) {
+			// If year, month, day, hour, minute, and second are set,
+			// a single post is being queried.
+			$this->is_single = true;
 		} elseif ( '' != $qv['pagename'] || ! empty( $qv['page_id'] ) ) {
 			$this->is_page   = true;
 			$this->is_single = false;
@@ -3061,104 +3065,64 @@
 
 		// Check post status to determine if post should be displayed.
 		if ( ! empty( $this->posts ) && ( $this->is_single || $this->is_page ) ) {
-			$status = get_post_status( $this->posts[0] );
+			$keys = array_keys( $this->posts );
+			foreach ( $keys as $i ) {
+				$status = get_post_status( $this->posts[$i] );
 
-			if ( 'attachment' === $this->posts[0]->post_type && 0 === (int) $this->posts[0]->post_parent ) {
-				$this->is_page       = false;
-				$this->is_single     = true;
-				$this->is_attachment = true;
-			}
+				if ( 'attachment' === $this->posts[$i]->post_type && 0 === (int) $this->posts[$i]->post_parent ) {
+					$this->is_page       = false;
+					$this->is_single     = true;
+					$this->is_attachment = true;
+				}
 
-			// If the post_status was specifically requested, let it pass through.
-			if ( ! in_array( $status, $q_status ) ) {
-				$post_status_obj = get_post_status_object( $status );
+				// If the post_status was specifically requested, let it pass through.
+				if ( ! in_array( $status, $q_status ) ) {
+					$post_status_obj = get_post_status_object( $status );
 
-				if ( $post_status_obj && ! $post_status_obj->public ) {
-					if ( ! is_user_logged_in() ) {
-						// User must be logged in to view unpublished posts.
-						$this->posts = array();
-					} else {
-						if ( $post_status_obj->protected ) {
-							// User must have edit permissions on the draft to preview.
-							if ( ! current_user_can( $edit_cap, $this->posts[0]->ID ) ) {
-								$this->posts = array();
+					if ( $post_status_obj && ! $post_status_obj->public ) {
+						if ( ! is_user_logged_in() ) {
+							// User must be logged in to view unpublished posts.
+							unset( $this->posts[$i] );
+						} else {
+							if ( $post_status_obj->protected ) {
+								// User must have edit permissions on the draft to preview.
+								if ( ! current_user_can( $edit_cap, $this->posts[$i]->ID ) ) {
+									unset( $this->posts[$i] );
+								} else {
+									$this->is_preview = true;
+									if ( 'future' != $status ) {
+										$this->posts[$i]->post_date = current_time( 'mysql' );
+									}
+								}
+							} elseif ( $post_status_obj->private ) {
+								if ( ! current_user_can( $read_cap, $this->posts[$i]->ID ) ) {
+									unset( $this->posts[$i] );
+								}
 							} else {
-								$this->is_preview = true;
-								if ( 'future' != $status ) {
-									$this->posts[0]->post_date = current_time( 'mysql' );
-								}
+								unset( $this->posts[$i] );
 							}
-						} elseif ( $post_status_obj->private ) {
-							if ( ! current_user_can( $read_cap, $this->posts[0]->ID ) ) {
-								$this->posts = array();
-							}
-						} else {
-							$this->posts = array();
 						}
+					} elseif ( ! $post_status_obj ) {
+						// Post status is not registered, assume it's not public.
+						if ( ! current_user_can( $edit_cap, $this->posts[$i]->ID ) ) {
+							unset( $this->posts[$i] );
+						}
 					}
-				} elseif ( ! $post_status_obj ) {
-					// Post status is not registered, assume it's not public.
-					if ( ! current_user_can( $edit_cap, $this->posts[0]->ID ) ) {
-						$this->posts = array();
-					}
 				}
-			}
 
-			if ( $this->is_preview && $this->posts && current_user_can( $edit_cap, $this->posts[0]->ID ) ) {
-				/**
-				 * Filters the single post for preview mode.
-				 *
-				 * @since 2.7.0
-				 *
-				 * @param WP_Post  $post_preview  The Post object.
-				 * @param WP_Query $this          The WP_Query instance (passed by reference).
-				 */
-				$this->posts[0] = get_post( apply_filters_ref_array( 'the_preview', array( $this->posts[0], &$this ) ) );
-			}
-		}
-
-		// Put sticky posts at the top of the posts array.
-		$sticky_posts = get_option( 'sticky_posts' );
-		if ( $this->is_home && $page <= 1 && is_array( $sticky_posts ) && ! empty( $sticky_posts ) && ! $q['ignore_sticky_posts'] ) {
-			$num_posts     = count( $this->posts );
-			$sticky_offset = 0;
-			// Loop over posts and relocate stickies to the front.
-			for ( $i = 0; $i < $num_posts; $i++ ) {
-				if ( in_array( $this->posts[ $i ]->ID, $sticky_posts ) ) {
-					$sticky_post = $this->posts[ $i ];
-					// Remove sticky from current position.
-					array_splice( $this->posts, $i, 1 );
-					// Move to front, after other stickies.
-					array_splice( $this->posts, $sticky_offset, 0, array( $sticky_post ) );
-					// Increment the sticky offset. The next sticky will be placed at this offset.
-					$sticky_offset++;
-					// Remove post from sticky posts array.
-					$offset = array_search( $sticky_post->ID, $sticky_posts );
-					unset( $sticky_posts[ $offset ] );
+				if ( $this->is_preview && $this->posts && current_user_can( $edit_cap, $this->posts[$i]->ID ) ) {
+					/**
+					 * Filters the single post for preview mode.
+					 *
+					 * @since 2.7.0
+					 *
+					 * @param WP_Post  $post_preview  The Post object.
+					 * @param WP_Query $this          The WP_Query instance (passed by reference).
+					 */
+					$this->posts[$i] = get_post( apply_filters_ref_array( 'the_preview', array( $this->posts[$i], &$this ) ) );
 				}
 			}
-
-			// If any posts have been excluded specifically, Ignore those that are sticky.
-			if ( ! empty( $sticky_posts ) && ! empty( $q['post__not_in'] ) ) {
-				$sticky_posts = array_diff( $sticky_posts, $q['post__not_in'] );
-			}
-
-			// Fetch sticky posts that weren't in the query results.
-			if ( ! empty( $sticky_posts ) ) {
-				$stickies = get_posts(
-					array(
-						'post__in'    => $sticky_posts,
-						'post_type'   => $post_type,
-						'post_status' => 'publish',
-						'nopaging'    => true,
-					)
-				);
-
-				foreach ( $stickies as $sticky_post ) {
-					array_splice( $this->posts, $sticky_offset, 0, array( $sticky_post ) );
-					$sticky_offset++;
-				}
-			}
+			$this->posts = array_merge( $this->posts );
 		}
 
 		// If comments have been fetched as part of the query, make sure comment meta lazy-loading is set up.
