WordPress.org

Make WordPress Core

Ticket #24610: 24610.diff

File 24610.diff, 6.3 KB (added by wonderboymusic, 13 months ago)
  • wp-includes/media.php

    diff --git a/wp-includes/media.php b/wp-includes/media.php
    index e63e5bb..bb8f330 100644
    a b function get_embedded_video( $content ) { 
    20272027} 
    20282028 
    20292029/** 
    2030  * Return suitable HTML code for output based on the content related to the global $post 
    2031  * 
    2032  * @since 3.6.0 
    2033  * 
    2034  * @param string $type Required. 'audio' or 'video' 
    2035  * @param WP_Post $post Optional. Used instead of global $post when passed. 
    2036  * @param int $limit Optional. The number of medias to extract if content is scanned. 
    2037  * @return string HTML for the media. Blank string if no media is found. 
    2038  */ 
    2039 function get_the_post_format_media( $type, &$post = null, $limit = 0 ) { 
    2040         global $wp_embed; 
    2041  
    2042         if ( empty( $post ) ) 
    2043                 $post = get_post(); 
    2044  
    2045         if ( empty( $post ) ) 
    2046                 return ''; 
    2047  
    2048         $cache_key = "media:{$type}"; 
    2049  
    2050         if ( isset( $post->format_content[ $cache_key ] ) ) 
    2051                 return $post->format_content[ $cache_key ]; 
    2052  
    2053         if ( ! isset( $post->format_content ) ) 
    2054                 $post->format_content = array(); 
    2055  
    2056         $count = 1; 
    2057  
    2058         // these functions expect a reference, so we should make a copy of post content to avoid changing it 
    2059         $content = $post->post_content; 
    2060  
    2061         $htmls = get_content_media( $type, $content, true, $limit ); 
    2062         if ( ! empty( $htmls ) ) { 
    2063                 $html = reset( $htmls ); 
    2064                 $post->format_content[ $cache_key ] = $html; 
    2065                 return $post->format_content[ $cache_key ]; 
    2066         } 
    2067  
    2068         $embeds = get_embedded_media( $type, $content, 1 ); 
    2069         if ( ! empty( $embeds ) ) { 
    2070                 $embed = reset( $embeds ); 
    2071                 if ( 0 === strpos( $embed, 'http' ) ) { 
    2072                         if ( strstr( $embed, home_url() ) ) { 
    2073                                 $post->format_content[ $cache_key ] = do_shortcode( sprintf( '[%s src="%s"]', $type, $embed ) ); 
    2074                         } else { 
    2075                                 $post->format_content[ $cache_key ] = $wp_embed->autoembed( $embed ); 
    2076                         } 
    2077                 } else { 
    2078                         $post->format_content[ $cache_key ] = $embed; 
    2079                 } 
    2080                 return $post->format_content[ $cache_key ]; 
    2081         } 
    2082  
    2083         $medias = call_user_func( 'get_attached_' . $type, $post->ID ); 
    2084         if ( ! empty( $medias ) ) { 
    2085                 $media = reset( $medias ); 
    2086                 $url = wp_get_attachment_url( $media->ID ); 
    2087                 $shortcode = sprintf( '[%s src="%s"]', $type, $url ); 
    2088                 $post->format_content[ $cache_key ] = do_shortcode( $shortcode ); 
    2089                 return $post->format_content[ $cache_key ]; 
    2090         } 
    2091  
    2092         return ''; 
    2093 } 
    2094  
    2095 /** 
    2096  * Output the first video in the current (@global) post's content 
    2097  * 
    2098  * @since 3.6.0 
    2099  * 
    2100  */ 
    2101 function the_post_format_video() { 
    2102         $null = null; 
    2103         echo get_the_post_format_media( 'video', $null, 1 ); 
    2104 } 
    2105 /** 
    2106  * Output the first audio  in the current (@global) post's content 
    2107  * 
    2108  * @since 3.6.0 
    2109  * 
    2110  */ 
    2111 function the_post_format_audio() { 
    2112         $null = null; 
    2113         echo get_the_post_format_media( 'audio', $null, 1 ); 
    2114 } 
    2115  
    2116 /** 
    21172030 * Retrieve images attached to the passed post 
    21182031 * 
    21192032 * @since 3.6.0 
    function get_post_gallery_images( $post_id = 0 ) { 
    23592272} 
    23602273 
    23612274/** 
    2362  * Return the first image in the current (@global) post's content 
    2363  * 
    2364  * @since 3.6.0 
    2365  * 
    2366  * @param string $attached_size If an attached image is found, the size to display it. 
    2367  * @param WP_Post $post Optional. Used instead of global $post when passed. 
    2368  * @return string HTML for the image. Blank string if no image is found. 
    2369  */ 
    2370 function get_the_post_format_image( $attached_size = 'full', &$post = null ) { 
    2371         if ( empty( $post ) ) 
    2372                 $post = get_post(); 
    2373  
    2374         if ( empty( $post ) ) 
    2375                 return ''; 
    2376  
    2377         $cache_key = "image:{$attached_size}"; 
    2378  
    2379         if ( isset( $post->format_content[ $cache_key ] ) ) 
    2380                 return $post->format_content[ $cache_key ]; 
    2381  
    2382         if ( ! isset( $post->format_content ) ) 
    2383                 $post->format_content = array(); 
    2384  
    2385         $matched = false; 
    2386         $link_fmt = '%s'; 
    2387  
    2388         $medias = get_attached_images( $post->ID ); 
    2389         if ( ! empty( $medias ) ) { 
    2390                 $media = reset( $medias ); 
    2391                 $sizes = get_intermediate_image_sizes(); 
    2392                 $sizes[] = 'full'; // Add original image source. 
    2393  
    2394                 $urls = array(); 
    2395                 foreach ( $sizes as $size ) { 
    2396                         $image = wp_get_attachment_image_src( $media->ID, $size ); 
    2397                         if ( $image ) 
    2398                                 $urls[] = reset( $image ); 
    2399                 } 
    2400  
    2401                 // Add media permalink. 
    2402                 $urls[] = get_attachment_link( $media->ID ); 
    2403  
    2404                 $count = 1; 
    2405                 $content = $post->post_content; 
    2406  
    2407                 if ( preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) { 
    2408                         foreach ( $matches as $shortcode ) { 
    2409                                 if ( 'caption' === $shortcode[2] ) { 
    2410                                         foreach ( $urls as $url ) { 
    2411                                                 if ( strstr( $shortcode[0], $url ) ) { 
    2412                                                         if ( ! $matched ) 
    2413                                                                 $matched = do_shortcode( $shortcode[0] ); 
    2414                                                         // $content = str_replace( $shortcode[0], '', $content, $count ); 
    2415                                                 } 
    2416                                         } 
    2417                                 } 
    2418                         } 
    2419                 } 
    2420  
    2421                 foreach ( array( 'a', 'img' ) as $tag ) { 
    2422                         if ( preg_match_all( '#' . get_tag_regex( $tag ) . '#', $content, $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) { 
    2423                                 foreach ( $matches as $match ) { 
    2424                                         foreach ( $urls as $url ) { 
    2425                                                 if ( strstr( $match[0], $url ) ) { 
    2426                                                         if ( ! $matched ) 
    2427                                                                 $matched = $match[0]; 
    2428                                                         // $content = str_replace( $match[0], '', $content, $count ); 
    2429                                                 } 
    2430                                         } 
    2431                                 } 
    2432                         } 
    2433                 } 
    2434  
    2435                 if ( ! $matched ) { 
    2436                         $image = wp_get_attachment_image( $media->ID, $attached_size ); 
    2437                         $post->format_content[ $cache_key ] = sprintf( $link_fmt, $image ); 
    2438                 } else { 
    2439                         $post->format_content[ $cache_key ] = $matched; 
    2440                         if ( ! empty( $meta['url'] ) && false === stripos( $matched, '<a ' ) ) 
    2441                                 $post->format_content[ $cache_key ] = sprintf( $link_fmt, $matched ); 
    2442                 } 
    2443                 return $post->format_content[ $cache_key ]; 
    2444         } 
    2445  
    2446         $content = $post->post_content; 
    2447         $htmls = get_content_images( $content, true, 1 ); 
    2448         if ( ! empty( $htmls ) ) { 
    2449                 $html = reset( $htmls ); 
    2450  
    2451                 $attachment_id = img_html_to_post_id( $html, $matched_html ); 
    2452                 if ( $attachment_id && $matched_html ) 
    2453                         $html = str_replace( $matched_html, wp_get_attachment_image( $attachment_id, $attached_size ), $html ); 
    2454  
    2455                 $post->format_content[ $cache_key ] = sprintf( $link_fmt, $html ); 
    2456                 return $post->format_content[ $cache_key ]; 
    2457         } 
    2458  
    2459         return ''; 
    2460 } 
    2461  
    2462 /** 
    2463  * Output the first image in the current (@global) post's content 
    2464  * 
    2465  * @since 3.6.0 
    2466  * 
    2467  * @param string $attached_size If an attached image is found, the size to display it. 
    2468  */ 
    2469 function the_post_format_image( $attached_size = 'full' ) { 
    2470         echo get_the_post_format_image( $attached_size ); 
    2471 } 
    2472  
    2473 /** 
    24742275 * Retrieve the post id for an attachment file URL 
    24752276 * 
    24762277 * @since 3.6.0