diff --git a/src/wp-includes/template-loader.php b/src/wp-includes/template-loader.php index 30626c8868..68c66b198b 100644 --- a/src/wp-includes/template-loader.php +++ b/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 a/src/wp-includes/template.php b/src/wp-includes/template.php index 315f2e8d2a..032243a289 100644 --- a/src/wp-includes/template.php +++ b/src/wp-includes/template.php @@ -404,6 +404,37 @@ function get_single_template() { return get_query_template( 'single', $templates ); } +/** + * 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. *