WordPress.org

Make WordPress Core

Ticket #23572: 23572.3.diff

File 23572.3.diff, 6.2 KB (added by wonderboymusic, 5 years ago)
  • wp-includes/media.php

    diff --git wp-includes/media.php wp-includes/media.php
    index cdcdd23..c28d24d 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 ) { 
    18221822}
    18231823
    18241824/**
     1825 * Extract the srcs from the post's [{media type}] <source>s
     1826 *
     1827 * @since 3.6.0
     1828 *
     1829 * @param string $content A string which might contain media data.
     1830 * @param boolean $remove Whether to remove the found URL from the passed content.
     1831 * @return array A list of lists. Each item has a list of sources corresponding
     1832 *              to a [{media type}]'s primary src and specified fallbacks
     1833 */
     1834function get_content_media( $type, &$content, $remove = false ) {
     1835        $src = '';
     1836        $items = array();
     1837        $matches = array();
     1838
     1839        if ( preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) {
     1840                foreach ( $matches as $shortcode ) {
     1841                        if ( $type === $shortcode[2] ) {
     1842                                $srcs = array();
     1843                                $count = 1;
     1844                                if ( $remove )
     1845                                        $content = str_replace( $shortcode[0], '', $content, $count );
     1846
     1847                                $item = do_shortcode_tag( $shortcode );
     1848                                preg_match_all( '#src=[\'"](.+?)[\'"]#is', $item, $src, PREG_SET_ORDER );
     1849                                if ( ! empty( $src ) ) {
     1850                                        foreach ( $src as $s )
     1851                                                $srcs[] = $s[1];
     1852
     1853                                        $items[] = array_values( array_unique( $srcs ) );
     1854                                }
     1855                        }
     1856                }
     1857        }
     1858        return $items;
     1859}
     1860
     1861/**
     1862 * Check the content blob for an <{media type}>, <object>, <embed>, or <iframe>, in that order
     1863 * If no HTML tag is found, check the first line of the post for a URL
     1864 *
     1865 * @since 3.6.0
     1866 *
     1867 * @param string $content A string which might contain media data.
     1868 * @param boolean $remove Whether to remove the found URL from the passed content.
     1869 * @return array A list of found HTML media embeds and possibly a URL by itself
     1870 */
     1871function get_embedded_media( $type, &$content, $remove = false ) {
     1872        $html = array();
     1873        $matches = '';
     1874
     1875        foreach ( array( $type, 'object', 'embed', 'iframe' ) as $tag ) {
     1876                if ( preg_match( '#' . get_tag_regex( $tag ) . '#', $content, $matches ) ) {
     1877                        $html[] = $matches[1];
     1878                        if ( $remove )
     1879                                $content = str_replace( $matches[0], '', $content );
     1880
     1881                        return $html;
     1882                }
     1883        }
     1884
     1885        $lines = explode( "\n", trim( $content ) );
     1886        $line = trim( array_shift( $lines  ) );
     1887
     1888        if ( 0 === stripos( $line, 'http' ) ) {
     1889                if ( $remove )
     1890                        $content = join( "\n", $lines );
     1891
     1892                $html[] = $line;
     1893        }
     1894        return $html;
     1895}
     1896
     1897/**
     1898 * Extract the srcs from the post's [audio] <source>s
     1899 *
     1900 * @since 3.6.0
     1901 *
     1902 * @param string $content A string which might contain audio data.
     1903 * @param boolean $remove Whether to remove the found URL from the passed content.
     1904 * @return array A list of lists. Each item has a list of sources corresponding
     1905 *              to a [audio]'s primary src and specified fallbacks
     1906 */
     1907function get_content_audio( &$content, $remove = false ) {
     1908        return get_content_media( 'audio', $content, $remove );
     1909}
     1910
     1911/**
     1912 * Check the content blob for an <audio>, <object>, <embed>, or <iframe>, in that order
     1913 * If no HTML tag is found, check the first line of the post for a URL
     1914 *
     1915 * @since 3.6.0
     1916 *
     1917 * @param string $content A string which might contain audio data.
     1918 * @param boolean $remove Whether to remove the found URL from the passed content.
     1919 * @return array A list of found HTML audio embeds and possibly a URL by itself
     1920 */
     1921function get_embedded_audio( &$content, $remove = false ) {
     1922        return get_embedded_media( 'audio', $content, $remove );
     1923}
     1924
     1925/**
     1926 * Extract the srcs from the post's [video] <source>s
     1927 *
     1928 * @since 3.6.0
     1929 *
     1930 * @param string $content A string which might contain video data.
     1931 * @param boolean $remove Whether to remove the found URL from the passed content.
     1932 * @return array A list of lists. Each item has a list of sources corresponding
     1933 *              to a [video]'s primary src and specified fallbacks
     1934 */
     1935function get_content_video( &$content, $remove = false ) {
     1936        return get_content_media( 'video', $content, $remove );
     1937}
     1938
     1939/**
     1940 * Check the content blob for a <video>, <object>, <embed>, or <iframe>, in that order
     1941 * If no HTML tag is found, check the first line of the post for a URL
     1942 *
     1943 * @since 3.6.0
     1944 *
     1945 * @param string $content A string which might contain video data.
     1946 * @param boolean $remove Whether to remove the found URL from the passed content.
     1947 * @return array A list of found HTML video embeds and possibly a URL by itself
     1948 */
     1949function get_embedded_video( &$content, $remove = false ) {
     1950        return get_embedded_media( 'video', $content, $remove );
     1951}
     1952
     1953/**
    18251954 * Audio embed handler callback.
    18261955 *
     1956 * @since 3.6.0
     1957 *
    18271958 * @param array $matches The regex matches from the provided regex when calling {@link wp_embed_register_handler()}.
    18281959 * @param array $attr Embed attributes.
    18291960 * @param string $url The original URL that was matched by the regex.
    wp_embed_register_handler( 'wp_audio_embed', '#https?://.+?\.(' . join( '|', wp_ 
    18411972/**
    18421973 * Video embed handler callback.
    18431974 *
     1975 * @since 3.6.0
     1976 *
    18441977 * @param array $matches The regex matches from the provided regex when calling {@link wp_embed_register_handler()}.
    18451978 * @param array $attr Embed attributes.
    18461979 * @param string $url The original URL that was matched by the regex.