diff --git src/wp-includes/embed-template.php src/wp-includes/embed-template.php
index fab8c84..ae72352 100644
--- src/wp-includes/embed-template.php
+++ src/wp-includes/embed-template.php
@@ -10,193 +10,20 @@
  * @since 4.4.0
  */
 
-if ( ! headers_sent() ) {
-	header( 'X-WP-embed: true' );
-}
+get_header( 'embed' );
 
-?>
-<!DOCTYPE html>
-<html <?php language_attributes(); ?> class="no-js">
-<head>
-	<title><?php echo wp_get_document_title(); ?></title>
-	<meta http-equiv="X-UA-Compatible" content="IE=edge">
-	<?php
-	/**
-	 * Print scripts or data in the embed template <head> tag.
-	 *
-	 * @since 4.4.0
-	 */
-	do_action( 'embed_head' );
-	?>
-</head>
-<body <?php body_class(); ?>>
-<?php
 if ( have_posts() ) :
-	while ( have_posts() ) : the_post();
-		// Add post thumbnail to response if available.
-		$thumbnail_id = false;
-
-		if ( has_post_thumbnail() ) {
-			$thumbnail_id = get_post_thumbnail_id();
-		}
-
-		if ( 'attachment' === get_post_type() && wp_attachment_is_image() ) {
-			$thumbnail_id = get_the_ID();
-		}
-
-		if ( $thumbnail_id ) {
-			$aspect_ratio = 1;
-			$measurements = array( 1, 1 );
-			$image_size   = 'full'; // Fallback.
-
-			$meta = wp_get_attachment_metadata( $thumbnail_id );
-			if ( ! empty( $meta['sizes'] ) ) {
-				foreach ( $meta['sizes'] as $size => $data ) {
-					if ( $data['width'] / $data['height'] > $aspect_ratio ) {
-						$aspect_ratio = $data['width'] / $data['height'];
-						$measurements = array( $data['width'], $data['height'] );
-						$image_size   = $size;
-					}
-				}
-			}
-
-			/**
-			 * Filter the thumbnail image size for use in the embed template.
-			 *
-			 * @since 4.4.0
-			 *
-			 * @param string $image_size Thumbnail image size.
-			 */
-			$image_size = apply_filters( 'embed_thumbnail_image_size', $image_size );
-
-			$shape = $measurements[0] / $measurements[1] >= 1.75 ? 'rectangular' : 'square';
-
-			/**
-			 * Filter the thumbnail shape for use in the embed template.
-			 *
-			 * Rectangular images are shown above the title
-			 * while square images are shown next to the content.
-			 *
-			 * @since 4.4.0
-			 *
-			 * @param string $shape Thumbnail image shape. Either 'rectangular' or 'square'.
-			 */
-			$shape = apply_filters( 'embed_thumbnail_image_shape', $shape );
-		}
-		?>
-		<div <?php post_class( 'wp-embed' ); ?>>
-			<?php if ( $thumbnail_id && 'rectangular' === $shape ) : ?>
-				<div class="wp-embed-featured-image rectangular">
-					<a href="<?php the_permalink(); ?>" target="_top">
-						<?php echo wp_get_attachment_image( $thumbnail_id, $image_size ); ?>
-					</a>
-				</div>
-			<?php endif; ?>
-
-			<p class="wp-embed-heading">
-				<a href="<?php the_permalink(); ?>" target="_top">
-					<?php the_title(); ?>
-				</a>
-			</p>
 
-			<?php if ( $thumbnail_id && 'square' === $shape ) : ?>
-				<div class="wp-embed-featured-image square">
-					<a href="<?php the_permalink(); ?>" target="_top">
-						<?php echo wp_get_attachment_image( $thumbnail_id, $image_size ); ?>
-					</a>
-				</div>
-			<?php endif; ?>
-
-			<div class="wp-embed-excerpt"><?php the_excerpt_embed(); ?></div>
-
-			<?php
-			/**
-			 * Print additional content after the embed excerpt.
-			 *
-			 * @since 4.4.0
-			 */
-			do_action( 'embed_content' );
-			?>
-
-			<div class="wp-embed-footer">
-				<div class="wp-embed-site-title">
-					<?php
-					$site_title = sprintf(
-						'<a href="%s" target="_top"><img src="%s" srcset="%s 2x" width="32" height="32" alt="" class="wp-embed-site-icon"/><span>%s</span></a>',
-						esc_url( home_url() ),
-						esc_url( get_site_icon_url( 32, admin_url( 'images/w-logo-blue.png' ) ) ),
-						esc_url( get_site_icon_url( 64, admin_url( 'images/w-logo-blue.png' ) ) ),
-						esc_html( get_bloginfo( 'name' ) )
-					);
+	while ( have_posts() ) : the_post();
 
-					/**
-					 * Filter the site title HTML in the embed footer.
-					 *
-					 * @since 4.4.0
-					 *
-					 * @param string $site_title The site title HTML.
-					 */
-					echo apply_filters( 'embed_site_title_html', $site_title );
-					?>
-				</div>
+		get_embed_template_part();
 
-				<div class="wp-embed-meta">
-					<?php
-					/**
-					 * Print additional meta content in the embed template.
-					 *
-					 * @since 4.4.0
-					 */
-					do_action( 'embed_content_meta');
-					?>
-				</div>
-			</div>
-		</div>
-		<?php
 	endwhile;
-else :
-	?>
-	<div class="wp-embed">
-		<p class="wp-embed-heading"><?php _e( 'Oops! That embed can&#8217;t be found.' ); ?></p>
 
-		<div class="wp-embed-excerpt">
-			<p>
-				<?php
-				printf(
-					/* translators: %s: a link to the embedded site */
-					__( 'It looks like nothing was found at this location. Maybe try visiting %s directly?' ),
-					'<strong><a href="' . esc_url( home_url() ) . '">' . esc_html( get_bloginfo( 'name' ) ) . '</a></strong>'
-				);
-				?>
-			</p>
-		</div>
+else :
 
-		<div class="wp-embed-footer">
-			<div class="wp-embed-site-title">
-				<?php
-				$site_title = sprintf(
-					'<a href="%s" target="_top"><img src="%s" srcset="%s 2x" width="32" height="32" alt="" class="wp-embed-site-icon"/><span>%s</span></a>',
-					esc_url( home_url() ),
-					esc_url( get_site_icon_url( 32, admin_url( 'images/w-logo-blue.png' ) ) ),
-					esc_url( get_site_icon_url( 64, admin_url( 'images/w-logo-blue.png' ) ) ),
-					esc_html( get_bloginfo( 'name' ) )
-				);
+	get_embed_template_part( 'none' );
 
-				/** This filter is documented in wp-includes/embed-template.php */
-				echo apply_filters( 'embed_site_title_html', $site_title );
-				?>
-			</div>
-		</div>
-	</div>
-	<?php
 endif;
 
-/**
- * Print scripts or data before the closing body tag in the embed template.
- *
- * @since 4.4.0
- */
-do_action( 'embed_footer' );
-?>
-</body>
-</html>
+get_footer( 'embed' );
diff --git src/wp-includes/embed.php src/wp-includes/embed.php
index 17b9ac4..b0711de 100644
--- src/wp-includes/embed.php
+++ src/wp-includes/embed.php
@@ -1045,3 +1045,108 @@ function print_embed_sharing_dialog() {
 	</div>
 	<?php
 }
+
+/**
+ * Prints the necessary markup for the embed thumbnail.
+ *
+ * @since 4.5.0
+ */
+function the_post_embed_thumbnail( $type = 'rectangular' ) {
+	$thumbnail_id = false;
+
+	if ( has_post_thumbnail() ) {
+		$thumbnail_id = get_post_thumbnail_id();
+	}
+
+	if ( 'attachment' === get_post_type() && wp_attachment_is_image() ) {
+		$thumbnail_id = get_the_ID();
+	}
+
+	if ( ! $thumbnail_id ) {
+		return;
+	}
+
+	$aspect_ratio = 1;
+	$measurements = array( 1, 1 );
+	$image_size   = 'full'; // Fallback.
+
+	$meta = wp_get_attachment_metadata( $thumbnail_id );
+	if ( is_array( $meta ) ) {
+		foreach ( $meta['sizes'] as $size => $data ) {
+			if ( $data['width'] / $data['height'] > $aspect_ratio ) {
+				$aspect_ratio = $data['width'] / $data['height'];
+				$measurements = array( $data['width'], $data['height'] );
+				$image_size   = $size;
+			}
+		}
+	}
+
+	/**
+	 * Filter the thumbnail image size for use in the embed template.
+	 *
+	 * @since 4.4.0
+	 * @since 4.5.0 Added `$thumbnail_id` parameter.
+	 *
+	 * @param string $image_size   Thumbnail image size.
+	 * @param int    $thumbnail_id Attachment ID.
+	 */
+	$image_size = apply_filters( 'embed_thumbnail_image_size', $image_size, $thumbnail_id );
+
+	$shape = $measurements[0] / $measurements[1] >= 1.75 ? 'rectangular' : 'square';
+
+	/**
+	 * Filter the thumbnail shape for use in the embed template.
+	 *
+	 * Rectangular images are shown above the title while square images
+	 * are shown next to the content.
+	 *
+	 * @since 4.4.0
+	 * @since 4.5.0 Added `$thumbnail_id` parameter.
+	 *
+	 * @param string $shape        Thumbnail image shape. Either 'rectangular' or 'square'.
+	 * @param int    $thumbnail_id Attachment ID.
+	 */
+	$shape = apply_filters( 'embed_thumbnail_image_shape', $shape, $thumbnail_id );
+
+	if ( 'rectangular' === $type && $shape === $type ) : ?>
+		<div class="wp-embed-featured-image rectangular">
+			<a href="<?php the_permalink(); ?>" target="_top">
+				<?php echo wp_get_attachment_image( $thumbnail_id, $image_size ); ?>
+			</a>
+		</div>
+	<?php endif;
+
+	if ( 'square' === $type && $shape === $type ) : ?>
+		<div class="wp-embed-featured-image square">
+			<a href="<?php the_permalink(); ?>" target="_top">
+				<?php echo wp_get_attachment_image( $thumbnail_id, $image_size ); ?>
+			</a>
+		</div>
+	<?php endif;
+}
+
+/**
+ * Prints the necessary markup for the site title.
+ *
+ * @since 4.5.0
+ */
+function the_embed_site_title() {
+	$site_title = sprintf(
+		'<a href="%s" target="_top"><img src="%s" srcset="%s 2x" width="32" height="32" alt="" class="wp-embed-site-icon"/><span>%s</span></a>',
+		esc_url( home_url() ),
+		esc_url( get_site_icon_url( 32, admin_url( 'images/w-logo-blue.png' ) ) ),
+		esc_url( get_site_icon_url( 64, admin_url( 'images/w-logo-blue.png' ) ) ),
+		esc_html( get_bloginfo( 'name' ) )
+	);
+
+	$site_title = '<div class="wp-embed-site-title">' . $site_title . '</div>';
+
+	/**
+	 * Filter the site title HTML in the embed footer.
+	 *
+	 * @since 4.4.0
+	 *
+	 * @param string $site_title The site title HTML.
+	 */
+	echo apply_filters( 'embed_site_title_html', $site_title );
+}
diff --git src/wp-includes/general-template.php src/wp-includes/general-template.php
index 3e13925..c37b688 100644
--- src/wp-includes/general-template.php
+++ src/wp-includes/general-template.php
@@ -36,14 +36,21 @@ function get_header( $name = null ) {
 
 	$templates = array();
 	$name = (string) $name;
-	if ( '' !== $name )
+	if ( '' !== $name ) {
 		$templates[] = "header-{$name}.php";
+	}
 
-	$templates[] = 'header.php';
+	if ( 'embed' === $name ) {
+		$backcompat_dir = ABSPATH . WPINC . '/theme-compat/embed';
+	} else {
+		$templates[]    = 'header.php';
+		$backcompat_dir = ABSPATH . WPINC . '/theme-compat';
+	}
 
 	// Backward compat code will be removed in a future release
-	if ('' == locate_template($templates, true))
-		load_template( ABSPATH . WPINC . '/theme-compat/header.php');
+	if ( '' == locate_template( $templates, true ) ) {
+		load_template( $backcompat_dir . '/header.php');
+	}
 }
 
 /**
@@ -76,14 +83,21 @@ function get_footer( $name = null ) {
 
 	$templates = array();
 	$name = (string) $name;
-	if ( '' !== $name )
+	if ( '' !== $name ) {
 		$templates[] = "footer-{$name}.php";
+	}
 
-	$templates[] = 'footer.php';
+	if ( 'embed' === $name ) {
+		$backcompat_dir = ABSPATH . WPINC . '/theme-compat/embed';
+	} else {
+		$templates[]    = 'footer.php';
+		$backcompat_dir = ABSPATH . WPINC . '/theme-compat';
+	}
 
 	// Backward compat code will be removed in a future release
-	if ('' == locate_template($templates, true))
-		load_template( ABSPATH . WPINC . '/theme-compat/footer.php');
+	if ( '' == locate_template( $templates, true ) ) {
+		load_template( $backcompat_dir . '/footer.php' );
+	}
 }
 
 /**
@@ -166,12 +180,38 @@ function get_template_part( $slug, $name = null ) {
 	if ( '' !== $name )
 		$templates[] = "{$slug}-{$name}.php";
 
-	$templates[] = "{$slug}.php";
+	if ( false === strpos( $name, 'embed' ) ) {
+		$templates[] = "{$slug}.php";
+	}
 
 	locate_template($templates, true, false);
 }
 
 /**
+ * Load an embed template part into a template
+ *
+ * @since 4.5.0
+ *
+ * @param string $name The name of the specialised template.
+ */
+function get_embed_template_part( $name = 'embed' ) {
+	$default_template = "content.php";
+
+	if ( 'none' === $name ) {
+		$name             = 'embed-none';
+		$default_template = "content-none.php";
+	}
+
+	// First try to use the content-$name.php template part provided by the theme
+	if ( null !== get_template_part( 'content', $name ) ) {
+		return;
+	}
+
+	// Nothing found, let's use the default output
+	load_template( ABSPATH . WPINC . '/theme-compat/embed/' . $default_template );
+}
+
+/**
  * Display search form.
  *
  * Will first attempt to locate the searchform.php file in either the child or
diff --git src/wp-includes/theme-compat/embed/content-none.php src/wp-includes/theme-compat/embed/content-none.php
index e69de29..eadcfcb 100644
--- src/wp-includes/theme-compat/embed/content-none.php
+++ src/wp-includes/theme-compat/embed/content-none.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Contains the post embed content template part.
+ *
+ * When a post is embedded in an iframe, this file is used to
+ * create the content template part output if the active theme does not include
+ * a content-embed.php template.
+ *
+ * @package WordPress
+ * @subpackage Theme_Compat
+ * @since 4.5.0
+ */
+?>
+<div class="wp-embed">
+	<p class="wp-embed-heading"><?php _e( 'Oops! That embed can&#8217;t be found.' ); ?></p>
+
+	<div class="wp-embed-excerpt">
+		<p>
+			<?php
+			printf(
+				/* translators: %s: a link to the embedded site */
+				__( 'It looks like nothing was found at this location. Maybe try visiting %s directly?' ),
+				'<strong><a href="' . esc_url( home_url() ) . '">' . esc_html( get_bloginfo( 'name' ) ) . '</a></strong>'
+			);
+			?>
+		</p>
+	</div>
+
+	<?php
+	/** This filter is documented in wp-includes/theme-compat/embed/content.php */
+	do_action( 'embed_content' );
+	?>
+
+	<div class="wp-embed-footer">
+
+		<?php the_embed_site_title() ?>
+
+	</div>
+</div>
diff --git src/wp-includes/theme-compat/embed/content.php src/wp-includes/theme-compat/embed/content.php
index e69de29..6e80bea 100644
--- src/wp-includes/theme-compat/embed/content.php
+++ src/wp-includes/theme-compat/embed/content.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Contains the post embed content template part.
+ *
+ * When a post is embedded in an iframe, this file is used to
+ * create the content template part output if the active theme does not include
+ * a content-embed.php template.
+ *
+ * @package WordPress
+ * @subpackage Theme_Compat
+ * @since 4.5.0
+ */
+?>
+<div <?php post_class( 'wp-embed' ); ?>>
+	<?php
+	/**
+	 * Display rectangular thumbnail above the Post Embed Title
+	 */
+	the_post_embed_thumbnail( 'rectangular' ) ?>
+
+	<p class="wp-embed-heading">
+		<a href="<?php the_permalink(); ?>" target="_top">
+			<?php the_title(); ?>
+		</a>
+	</p>
+
+	<?php
+	/**
+	 * Display square thumbnail above the Post Embed Title
+	 */
+	the_post_embed_thumbnail( 'square' ) ?>
+
+	<div class="wp-embed-excerpt"><?php the_excerpt_embed(); ?></div>
+
+	<?php
+	/**
+	 * Print additional content after the embed excerpt.
+	 *
+	 * @since 4.4.0
+	 */
+	do_action( 'embed_content' );
+	?>
+
+	<div class="wp-embed-footer">
+
+		<?php the_embed_site_title() ?>
+
+		<div class="wp-embed-meta">
+			<?php
+			/**
+			 * Print additional meta content in the embed template.
+			 *
+			 * @since 4.4.0
+			 */
+			do_action( 'embed_content_meta');
+			?>
+		</div>
+	</div>
+</div>
+<?php
diff --git src/wp-includes/theme-compat/embed/footer.php src/wp-includes/theme-compat/embed/footer.php
index e69de29..05e9f4f 100644
--- src/wp-includes/theme-compat/embed/footer.php
+++ src/wp-includes/theme-compat/embed/footer.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * Contains the post embed footer template.
+ *
+ * When a post is embedded in an iframe, this file is used to
+ * create the footer output if the active theme does not include
+ * a footer-embed.php template.
+ *
+ * @package WordPress
+ * @subpackage Theme_Compat
+ * @since 4.5.0
+ */
+
+/**
+ * Print scripts or data before the closing body tag in the embed template.
+ *
+ * @since 4.4.0
+ */
+do_action( 'embed_footer' );
+?>
+</body>
+</html>
diff --git src/wp-includes/theme-compat/embed/header.php src/wp-includes/theme-compat/embed/header.php
index e69de29..a95bdb3 100644
--- src/wp-includes/theme-compat/embed/header.php
+++ src/wp-includes/theme-compat/embed/header.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Contains the post embed header template.
+ *
+ * When a post is embedded in an iframe, this file is used to
+ * create the header output if the active theme does not include
+ * a header-embed.php template.
+ *
+ * @package WordPress
+ * @subpackage Theme_Compat
+ * @since 4.5.0
+ */
+
+if ( ! headers_sent() ) {
+	header( 'X-WP-embed: true' );
+}
+
+?>
+<!DOCTYPE html>
+<html <?php language_attributes(); ?> class="no-js">
+<head>
+	<title><?php echo wp_get_document_title(); ?></title>
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<?php
+	/**
+	 * Print scripts or data in the embed template <head> tag.
+	 *
+	 * @since 4.4.0
+	 */
+	do_action( 'embed_head' );
+	?>
+</head>
+<body <?php body_class(); ?>>
