WordPress.org

Make WordPress Core

Ticket #22960: 22960.6.diff

File 22960.6.diff, 8.9 KB (added by wonderboymusic, 13 months ago)
  • wp-includes/functions.php

    diff --git wp-includes/functions.php wp-includes/functions.php
    index b55bca1..836ff7f 100644
    function get_tag_regex( $tag ) { 
    40394039                return; 
    40404040 
    40414041        return sprintf( '(<%1$s[^>]*(?:/?>$|>[\s\S]*?</%1$s>))', tag_escape( $tag ) ); 
    4042 } 
    4043  No newline at end of file 
     4042} 
  • wp-includes/media.php

    diff --git wp-includes/media.php wp-includes/media.php
    index cdcdd23..070ac2a 100644
    function wp_audio_shortcode( $attr ) { 
    874874        } 
    875875 
    876876        if ( ! $primary ) { 
    877                 $audios = get_post_audio( $post_id ); 
     877                $audios = get_attached_audio( $post_id ); 
    878878                if ( empty( $audios ) ) 
    879879                        return; 
    880880 
    function wp_video_shortcode( $attr ) { 
    981981        } 
    982982 
    983983        if ( ! $primary ) { 
    984                 $videos = get_post_video( $post_id ); 
     984                $videos = get_attached_video( $post_id ); 
    985985                if ( empty( $videos ) ) 
    986986                        return; 
    987987 
    function wp_enqueue_media( $args = array() ) { 
    17811781 * @param int $post_id  Post ID 
    17821782 * @return array Found audio attachments 
    17831783 */ 
    1784 function get_post_audio( $post_id = 0 ) { 
     1784function get_attached_audio( $post_id = 0 ) { 
    17851785        $post = empty( $post_id ) ? get_post() : get_post( $post_id ); 
    17861786        if ( empty( $post ) ) 
    17871787                return; 
    function get_post_audio( $post_id = 0 ) { 
    18051805 * @param int $post_id  Post ID 
    18061806 * @return array Found video attachments 
    18071807 */ 
    1808 function get_post_video( $post_id = 0 ) { 
     1808function get_attached_video( $post_id = 0 ) { 
    18091809        $post = empty( $post_id ) ? get_post() : get_post( $post_id ); 
    18101810        if ( empty( $post ) ) 
    18111811                return; 
    function get_post_video( $post_id = 0 ) { 
    18241824/** 
    18251825 * Audio embed handler callback. 
    18261826 * 
     1827 * @since 3.6.0 
     1828 * 
    18271829 * @param array $matches The regex matches from the provided regex when calling {@link wp_embed_register_handler()}. 
    18281830 * @param array $attr Embed attributes. 
    18291831 * @param string $url The original URL that was matched by the regex. 
    wp_embed_register_handler( 'wp_audio_embed', '#https?://.+?\.(' . join( '|', wp_ 
    18411843/** 
    18421844 * Video embed handler callback. 
    18431845 * 
     1846 * @since 3.6.0 
     1847 * 
    18441848 * @param array $matches The regex matches from the provided regex when calling {@link wp_embed_register_handler()}. 
    18451849 * @param array $attr Embed attributes. 
    18461850 * @param string $url The original URL that was matched by the regex. 
    function wp_video_embed( $matches, $attr, $url, $rawattr ) { 
    18601864        return apply_filters( 'wp_video_embed', $video, $attr, $url, $rawattr ); 
    18611865} 
    18621866wp_embed_register_handler( 'wp_video_embed', '#https?://.+?\.(' . join( '|', wp_get_video_extensions() ) . ')#i', apply_filters( 'wp_video_embed_handler', 'wp_video_embed' ), 9999 ); 
     1867 
     1868/** 
     1869 * Retrieve images attached to the passed post 
     1870 * 
     1871 * @since 3.6.0 
     1872 * 
     1873 * @param int $post_id Optional. Post ID. 
     1874 * @return array Found image attachments 
     1875 */ 
     1876function get_attached_images( $post_id = 0 ) { 
     1877        $post = empty( $post_id ) ? get_post() : get_post( $post_id ); 
     1878        if ( empty( $post ) ) 
     1879                return array(); 
     1880 
     1881        $children = get_children( array( 
     1882                'post_parent' => $post->ID, 
     1883                'post_type' => 'attachment', 
     1884                'post_mime_type' => 'image', 
     1885                'posts_per_page' => -1, 
     1886                'orderby' => 'menu_order', 
     1887                'order' => 'ASC' 
     1888        ) ); 
     1889 
     1890        if ( ! empty( $children ) ) 
     1891                return $children; 
     1892 
     1893        return array(); 
     1894} 
     1895 
     1896/** 
     1897 * Retrieve images attached to the passed post 
     1898 * 
     1899 * @since 3.6.0 
     1900 * 
     1901 * @param int $post_id Optional. Post ID. 
     1902 * @return array Found image attachments 
     1903 */ 
     1904function get_attached_image_srcs( $post_id = 0 ) { 
     1905        $children = get_attached_images( $post_id ); 
     1906        if ( empty( $children ) ) 
     1907                return array(); 
     1908 
     1909        $srcs = array(); 
     1910        foreach ( $children as $attachment ) 
     1911                $srcs[] = wp_get_attachment_url( $attachment->ID ); 
     1912 
     1913        return $srcs; 
     1914} 
     1915 
     1916/** 
     1917 * Check the content blob for image srcs 
     1918 * 
     1919 * @since 3.6.0 
     1920 * 
     1921 * @param string $content A string which might contain image data. 
     1922 * @param boolean $remove Whether to remove the found data from the passed content. 
     1923 * @param int $limit Optional. The number of image srcs to return 
     1924 * @return array The found image srcs 
     1925 */ 
     1926function get_content_images( &$content, $remove = false, $limit = 0 ) { 
     1927        $src = ''; 
     1928        $srcs = array(); 
     1929        $matches = array(); 
     1930 
     1931        if ( $remove && preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) { 
     1932                $captions = array(); 
     1933                foreach ( $matches as $shortcode ) { 
     1934                        if ( 'caption' === $shortcode[2] ) 
     1935                                $captions[] = $shortcode[0]; 
     1936                } 
     1937        } 
     1938 
     1939        if ( preg_match_all( '#<img[^>]+/?>#i', $content, $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) { 
     1940                foreach ( $matches as $tag ) { 
     1941                        $count = 1; 
     1942                        if ( $remove ) { 
     1943                                foreach ( $captions as $caption ) { 
     1944                                        if ( strstr( $caption, $tag[0] ) ) { 
     1945                                                $content = str_replace( $caption, '', $content, $count ); 
     1946                                        } 
     1947                                } 
     1948 
     1949                                $content = str_replace( $tag[0], '', $content, $count ); 
     1950                        } 
     1951 
     1952                        preg_match( '#src=[\'"](.+?)[\'"]#is', $tag[0], $src ); 
     1953                        if ( ! empty( $src[1] ) ) { 
     1954                                $srcs[] = $src[1]; 
     1955                                if ( $limit > 0 && count( $srcs ) >= $limit ) 
     1956                                        break; 
     1957                        } 
     1958                } 
     1959        } 
     1960 
     1961        return array_values( array_unique( $srcs ) ); 
     1962} 
     1963 
     1964/** 
     1965 * Check the content blob for image srcs and return the first 
     1966 * 
     1967 * @since 3.6.0 
     1968 * 
     1969 * @param string $content A string which might contain image data. 
     1970 * @param boolean $remove Whether to remove the found data from the passed content. 
     1971 * @return string The found data 
     1972 */ 
     1973function get_content_image( &$content, $remove = false ) { 
     1974        $srcs = get_content_images( $content, $remove, 1 ); 
     1975        if ( empty( $srcs ) ) 
     1976                return ''; 
     1977 
     1978        return reset( $srcs ); 
     1979} 
     1980 
     1981/** 
     1982 * Check the content blob for galleries and return their image srcs 
     1983 * 
     1984 * @since 3.6.0 
     1985 * 
     1986 * @param string $content A string which might contain image data. 
     1987 * @param boolean $remove Optional. Whether to remove the found data from the passed content. 
     1988 * @param int $limit Optional. The number of galleries to return 
     1989 * @return array A list of galleries, which in turn are a list of their srcs in order 
     1990 */ 
     1991function get_content_galleries( &$content, $remove = false, $limit = 0 ) { 
     1992        $src = ''; 
     1993        $galleries = array(); 
     1994        $matches = array(); 
     1995 
     1996        if ( preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) { 
     1997                foreach ( $matches as $shortcode ) { 
     1998                        if ( 'gallery' === $shortcode[2] ) { 
     1999                                $srcs = array(); 
     2000                                $count = 1; 
     2001                                if ( $remove ) 
     2002                                        $content = str_replace( $shortcode[0], '', $content, $count ); 
     2003 
     2004                                $data = shortcode_parse_atts( $shortcode[3] ); 
     2005                                $gallery = do_shortcode_tag( $shortcode ); 
     2006                                preg_match_all( '#src=[\'"](.+?)[\'"]#is', $gallery, $src, PREG_SET_ORDER ); 
     2007                                if ( ! empty( $src ) ) { 
     2008                                        foreach ( $src as $s ) 
     2009                                                $srcs[] = $s[1]; 
     2010                                } 
     2011 
     2012                                $data['src'] = array_values( array_unique( $srcs ) ); 
     2013                                $galleries[] = $data; 
     2014                                if ( $limit > 0 && count( $galleries ) >= $limit ) 
     2015                                        break; 
     2016                        } 
     2017                } 
     2018        } 
     2019 
     2020        return $galleries; 
     2021} 
     2022 
     2023/** 
     2024 * Retrieve galleries from the passed post's content 
     2025 * 
     2026 * @since 3.6.0 
     2027 * 
     2028 * @param int $post_id Optional. Post ID. 
     2029 * @return array A list of arrays, each containing gallery data and srcs parsed 
     2030 *              from the expanded shortcode 
     2031 */ 
     2032function get_post_galleries( $post_id = 0 ) { 
     2033        $post = empty( $post_id ) ? clone get_post() : get_post( $post_id ); 
     2034        if ( empty( $post ) || ! has_shortcode( $post->post_content, 'gallery' )  ) 
     2035                return array(); 
     2036 
     2037        return get_content_galleries( $post->post_content ); 
     2038} 
     2039 
     2040/** 
     2041 * Retrieve the image srcs from galleries from a post's content, if present 
     2042 * 
     2043 * @since 3.6.0 
     2044 * 
     2045 * @param int $post_id Optional. Post ID. 
     2046 * @return array A list of lists, each containing image srcs parsed 
     2047 *              from an expanded shortcode 
     2048 */ 
     2049function get_post_galleries_images( $post_id = 0 ) { 
     2050        $post = empty( $post_id ) ? clone get_post() : get_post( $post_id ); 
     2051        if ( empty( $post ) || ! has_shortcode( $post->post_content, 'gallery' )  ) 
     2052                return array(); 
     2053 
     2054        $data = get_content_galleries( $post->post_content ); 
     2055        return wp_list_pluck( $data, 'src' ); 
     2056} 
     2057 
     2058/** 
     2059 * Check a specified post's content for gallery and, if present, return the first 
     2060 * 
     2061 * @since 3.6.0 
     2062 * 
     2063 * @param int $post_id Optional. Post ID. 
     2064 * @return array Gallery data and srcs parsed from the expanded shortcode 
     2065 */ 
     2066function get_post_gallery( $post_id = 0 ) { 
     2067        $post = empty( $post_id ) ? clone get_post() : get_post( $post_id ); 
     2068        if ( empty( $post ) || ! has_shortcode( $post->post_content, 'gallery' ) ) 
     2069                return array(); 
     2070 
     2071        $data = get_content_galleries( $post->post_content, false, 1 ); 
     2072        return reset( $data ); 
     2073} 
     2074 
     2075/** 
     2076 * Check a post's content for galleries and return the image srcs for the first found gallery 
     2077 * 
     2078 * @since 3.6.0 
     2079 * 
     2080 * @param int $post_id Optional. Post ID. 
     2081 * @return array A list of a gallery's image srcs in order 
     2082 */ 
     2083function get_post_gallery_images( $post_id = 0 ) { 
     2084        $gallery = get_post_gallery( $post_id ); 
     2085        if ( empty( $gallery['src'] ) ) 
     2086                return array(); 
     2087 
     2088        return $gallery['src']; 
     2089} 
     2090 No newline at end of file