Index: src/wp-includes/class-wp-query.php
===================================================================
--- src/wp-includes/class-wp-query.php	(revision 41289)
+++ src/wp-includes/class-wp-query.php	(working copy)
@@ -2764,6 +2764,18 @@
 			$this->post_count = count( $this->posts );
 			$this->set_found_posts( $q, $limits );
 
+			if ( ! $q['suppress_filters'] ) {
+				/**
+				 * Filters the return value of post results array.
+				 *
+				 * @since 4.9.0
+				 *
+				 * @param array    $posts The array that is returned, with ids, wp_posts or id=>parent
+				 * @param WP_Query &$this The WP_Query instance (passed by reference).
+				 */
+				$this->posts = apply_filters_ref_array( 'post_query_return', array( $this->posts, &$this ) );
+			}
+
 			return $this->posts;
 		}
 
@@ -2783,6 +2795,18 @@
 				$r[ (int) $post->ID ] = (int) $post->post_parent;
 			}
 
+			if ( ! $q['suppress_filters'] ) {
+				/**
+				 * Filters the return value of post results array.
+				 *
+				 * @since 4.9.0
+				 *
+				 * @param array    $posts The array that is returned, with ids, wp_posts or id=>parent
+				 * @param WP_Query &$this The WP_Query instance (passed by reference).
+				 */
+				$r = apply_filters_ref_array( 'post_query_return', array( $r, &$this ) );
+			}
+
 			return $r;
 		}
 
@@ -3002,6 +3026,18 @@
 			wp_queue_posts_for_term_meta_lazyload( $this->posts );
 		}
 
+		if ( ! $q['suppress_filters'] ) {
+			/**
+			 * Filters the return value of post results array.
+			 *
+			 * @since 4.9.0
+			 *
+			 * @param array    $posts The array that is returned, with ids, wp_posts or id=>parent
+			 * @param WP_Query &$this The WP_Query instance (passed by reference).
+			 */
+			$this->posts = apply_filters_ref_array( 'post_query_return', array( $this->posts, &$this ) );
+		}
+
 		return $this->posts;
 	}
 
