diff --git a/wp-includes/media.php b/wp-includes/media.php index 8bc2e4423a..62e8fd6307 100644 --- a/wp-includes/media.php +++ b/wp-includes/media.php @@ -2063,8 +2063,13 @@ function get_the_post_format_media( $type, &$post = null, $limit = 0 ) { if ( empty( $post ) ) return ''; - if ( isset( $post->format_content ) ) - return $post->format_content; + $cache_key = "media:{$type}"; + + if ( isset( $post->format_content[ $cache_key ] ) ) + return $post->format_content[ $cache_key ]; + + if ( ! isset( $post->format_content ) ) + $post->format_content = array(); $count = 1; @@ -2078,21 +2083,21 @@ function get_the_post_format_media( $type, &$post = null, $limit = 0 ) { } elseif ( preg_match( '/' . get_shortcode_regex() . '/s', $value ) ) { $shortcode = $value; } elseif ( preg_match( '#<[^>]+>#', $value ) ) { - $post->format_content = $value; - return $post->format_content; + $post->format_content[ $cache_key ] = $value; + return $post->format_content[ $cache_key ]; } elseif ( 0 === strpos( $value, 'http' ) ) { $post->split_content = str_replace( $value, '', $post->post_content, $count ); if ( strstr( $value, home_url() ) ) { $shortcode = sprintf( '[%s src="%s"]', $type, $value ); } else { - $post->format_content = $wp_embed->autoembed( $value ); - return $post->format_content; + $post->format_content[ $cache_key ] = $wp_embed->autoembed( $value ); + return $post->format_content[ $cache_key ]; } } if ( ! empty( $shortcode ) ) { - $post->format_content = do_shortcode( $shortcode ); - return $post->format_content; + $post->format_content[ $cache_key ] = do_shortcode( $shortcode ); + return $post->format_content[ $cache_key ]; } } } @@ -2104,8 +2109,8 @@ function get_the_post_format_media( $type, &$post = null, $limit = 0 ) { if ( ! empty( $htmls ) ) { $html = reset( $htmls ); $post->split_content = $content; - $post->format_content = $html; - return $post->format_content; + $post->format_content[ $cache_key ] = $html; + return $post->format_content[ $cache_key ]; } $embeds = get_embedded_media( $type, $content, true, 1 ); @@ -2114,14 +2119,14 @@ function get_the_post_format_media( $type, &$post = null, $limit = 0 ) { $post->split_content = $content; if ( 0 === strpos( $embed, 'http' ) ) { if ( strstr( $embed, home_url() ) ) { - $post->format_content = do_shortcode( sprintf( '[%s src="%s"]', $type, $embed ) ); + $post->format_content[ $cache_key ] = do_shortcode( sprintf( '[%s src="%s"]', $type, $embed ) ); } else { - $post->format_content = $wp_embed->autoembed( $embed ); + $post->format_content[ $cache_key ] = $wp_embed->autoembed( $embed ); } } else { - $post->format_content = $embed; + $post->format_content[ $cache_key ] = $embed; } - return $post->format_content; + return $post->format_content[ $cache_key ]; } $medias = call_user_func( 'get_attached_' . $type, $post->ID ); @@ -2129,8 +2134,8 @@ function get_the_post_format_media( $type, &$post = null, $limit = 0 ) { $media = reset( $medias ); $url = wp_get_attachment_url( $media->ID ); $shortcode = sprintf( '[%s src="%s"]', $type, $url ); - $post->format_content = do_shortcode( $shortcode ); - return $post->format_content; + $post->format_content[ $cache_key ] = do_shortcode( $shortcode ); + return $post->format_content[ $cache_key ]; } return ''; @@ -2408,8 +2413,13 @@ function get_the_post_format_image( $attached_size = 'full', &$post = null ) { if ( empty( $post ) ) return ''; - if ( isset( $post->format_content ) && false !== strpos( $post->format_content, 'attachment-' . $attached_size ) ) - return $post->format_content; + $cache_key = "image:{$attached_size}"; + + if ( isset( $post->format_content[ $cache_key ] ) ) + return $post->format_content[ $cache_key ]; + + if ( ! isset( $post->format_content ) ) + $post->format_content = array(); $matched = false; $meta = get_post_format_meta( $post->ID ); @@ -2443,10 +2453,10 @@ function get_the_post_format_image( $attached_size = 'full', &$post = null ) { } if ( false === strpos( $image, 'format_content = sprintf( $link_fmt, $image ); + $post->format_content[ $cache_key ] = sprintf( $link_fmt, $image ); else - $post->format_content = $image; - return $post->format_content; + $post->format_content[ $cache_key ] = $image; + return $post->format_content[ $cache_key ]; } $medias = get_attached_images( $post->ID ); @@ -2500,13 +2510,13 @@ function get_the_post_format_image( $attached_size = 'full', &$post = null ) { $post->split_content = $content; if ( ! $matched ) { $image = wp_get_attachment_image( $media->ID, $attached_size ); - $post->format_content = sprintf( $link_fmt, $image ); + $post->format_content[ $cache_key ] = sprintf( $link_fmt, $image ); } else { - $post->format_content = $matched; + $post->format_content[ $cache_key ] = $matched; if ( ! empty( $meta['url'] ) && false === stripos( $matched, 'format_content = sprintf( $link_fmt, $matched ); + $post->format_content[ $cache_key ] = sprintf( $link_fmt, $matched ); } - return $post->format_content; + return $post->format_content[ $cache_key ]; } $content = $post->post_content; @@ -2514,8 +2524,8 @@ function get_the_post_format_image( $attached_size = 'full', &$post = null ) { if ( ! empty( $htmls ) ) { $html = reset( $htmls ); $post->split_content = $content; - $post->format_content = sprintf( $link_fmt, $html ); - return $post->format_content; + $post->format_content[ $cache_key ] = sprintf( $link_fmt, $html ); + return $post->format_content[ $cache_key ]; } }