diff --git src/wp-includes/template-loader.php src/wp-includes/template-loader.php
index 30626c8..68c66b1 100644
--- src/wp-includes/template-loader.php
+++ src/wp-includes/template-loader.php
@@ -39,26 +39,12 @@ elseif ( is_feed() ) :
 elseif ( is_trackback() ) :
 	include( ABSPATH . 'wp-trackback.php' );
 	return;
-elseif ( is_embed() ) :
-	$template = ABSPATH . WPINC . '/theme-compat/embed.php';
-
-	/**
-	 * Filter the template used for embedded posts.
-	 *
-	 * @since 4.4.0
-	 * @since 4.5.0 The default template path changed to wp-includes/theme-compat/embed.php
-	 *
-	 * @param string $template Path to the template file.
-	 */
-	$template = apply_filters( 'embed_template', $template );
-
-	include ( $template );
-	return;
 endif;
 
 if ( defined('WP_USE_THEMES') && WP_USE_THEMES ) :
 	$template = false;
-	if     ( is_404()            && $template = get_404_template()            ) :
+	if     ( is_embed()          && $template = get_embed_template()          ) :
+	elseif ( is_404()            && $template = get_404_template()            ) :
 	elseif ( is_search()         && $template = get_search_template()         ) :
 	elseif ( is_front_page()     && $template = get_front_page_template()     ) :
 	elseif ( is_home()           && $template = get_home_template()           ) :
diff --git src/wp-includes/template.php src/wp-includes/template.php
index 315f2e8..032243a 100644
--- src/wp-includes/template.php
+++ src/wp-includes/template.php
@@ -405,6 +405,37 @@ function get_single_template() {
 }
 
 /**
+ * Retrieve path of embed template in current or parent template.
+ * By default the WordPress-template is returned.
+ *
+ * The template path is filterable via the dynamic {@see '$type_template'} hook,
+ * e.g. 'embed_template'.
+ *
+ * @since 4.5.0
+ *
+ * @see get_query_template()
+ *
+ * @return string Full path to embed template file.
+ */
+function get_embed_template() {
+	$object = get_queried_object();
+
+	$templates = array();
+
+	if ( ! empty( $object->post_type ) ) {
+		$post_format = get_post_format( $object );
+		if ( $post_format ) {
+			$templates[] = "embed-{$object->post_type}-{$post_format}.php";
+		}
+		$templates[] = "embed-{$object->post_type}.php";
+	}
+
+	$templates[] = "embed.php";
+
+	return get_query_template( 'embed', $templates );
+}
+
+/**
  * Retrieves the path of the singular template in current or parent template.
  *
  * The template path is filterable via the dynamic {@see '$type_template'} hook,
