WordPress.org

Make WordPress Core

Ticket #23347: 23347.2.diff

File 23347.2.diff, 7.5 KB (added by wonderboymusic, 3 years ago)
  • wp-includes/default-filters.php

    diff --git wp-includes/default-filters.php wp-includes/default-filters.php
    index 7d47e45..706fedb 100644
    add_filter( 'the_title', 'wptexturize' ); 
    132132add_filter( 'the_title', 'convert_chars' ); 
    133133add_filter( 'the_title', 'trim'          ); 
    134134 
    135 add_filter( 'the_content', 'wptexturize'        ); 
    136 add_filter( 'the_content', 'convert_smilies'    ); 
    137 add_filter( 'the_content', 'convert_chars'      ); 
    138 add_filter( 'the_content', 'wpautop'            ); 
    139 add_filter( 'the_content', 'shortcode_unautop'  ); 
    140 add_filter( 'the_content', 'prepend_attachment' ); 
     135add_filter( 'the_content', 'post_formats_compat', 7 ); 
     136add_filter( 'the_content', 'wptexturize'            ); 
     137add_filter( 'the_content', 'convert_smilies'        ); 
     138add_filter( 'the_content', 'convert_chars'          ); 
     139add_filter( 'the_content', 'wpautop'                ); 
     140add_filter( 'the_content', 'shortcode_unautop'      ); 
     141add_filter( 'the_content', 'prepend_attachment'     ); 
    141142 
    142143add_filter( 'the_excerpt',     'wptexturize'      ); 
    143144add_filter( 'the_excerpt',     'convert_smilies'  ); 
  • wp-includes/formatting.php

    diff --git wp-includes/formatting.php wp-includes/formatting.php
    index 83f5269..f49cf51 100644
    function convert_smilies($text) { 
    18021802} 
    18031803 
    18041804/** 
     1805 * Return the class for a post format content wrapper 
     1806 * 
     1807 * @since 3.6.0 
     1808 * 
     1809 * @param string $format 
     1810 */ 
     1811function get_post_format_content_class( $format ) { 
     1812        return apply_filters( 'post_format_content_class', $format . '-post-format-content', $format ); 
     1813} 
     1814 
     1815/** 
     1816 * Ouput the class for a post format content wrapper 
     1817 * 
     1818 * @since 3.6.0 
     1819 * 
     1820 * @param string $format 
     1821 */ 
     1822function post_format_content_class( $format ) { 
     1823        echo get_post_format_content_class( $format ); 
     1824} 
     1825 
     1826/** 
     1827 * Provide fallback behavior for Posts that have associated post format 
     1828 * 
     1829 * @since 3.6.0 
     1830 * 
     1831 * @param string $content 
     1832 */ 
     1833function post_formats_compat( $content, $id = 0 ) { 
     1834        $post = empty( $id ) ? get_post() : get_post( $id ); 
     1835        if ( empty( $post ) ) 
     1836                return $content; 
     1837 
     1838        $format = get_post_format( $post ); 
     1839        if ( empty( $format ) ) 
     1840                return $content; 
     1841 
     1842        if ( current_theme_supports( 'post-formats', $format ) ) 
     1843                return $content; 
     1844 
     1845        $defaults = array( 
     1846                'position' => 'after', 
     1847                'tag' => 'div', 
     1848                'class' => get_post_format_content_class( $format ), 
     1849                'chat_tag' => 'span', 
     1850                'chat_tag_class' => 'chat-line', 
     1851                'chat_delimiter' => PHP_EOL, 
     1852                'link_class' => '', 
     1853                'image_class' => '', 
     1854                'gallery' => '[gallery]', 
     1855                'audio' => '[audio]', 
     1856                'video' => '[video]' 
     1857        ); 
     1858 
     1859        $args = apply_filters( 'post_format_compat', array() ); 
     1860        $compat = wp_parse_args( $args, $defaults ); 
     1861 
     1862        $show_content = true; 
     1863        $format_output = ''; 
     1864        $meta = get_post_format_meta( $post->ID ); 
     1865 
     1866        switch ( $format ) { 
     1867        case 'chat': 
     1868                $show_content = false; 
     1869                $lines = explode( $compat['chat_delimiter'], $content ); 
     1870                foreach ( $lines as $line ) 
     1871                        $format_output .= sprintf( '<%1$s class="%2$s">%3$s</%1$s>', $compat['chat_tag'], $compat['chat_tag_class'], $line ); 
     1872                break; 
     1873 
     1874        case 'link': 
     1875                $compat['tag'] = ''; 
     1876 
     1877                if ( ! empty( $meta['url'] ) ) { 
     1878                        $format_output .= sprintf( 
     1879                                '<a %shref="%s">%s</a>', 
     1880                                empty( $compat['link_class'] ) ? '' : sprintf( 'class="%s" ', $compat['link_class'] ), 
     1881                                esc_url( $meta['url'] ), 
     1882                                empty( $post->post_title ) ? esc_url( $meta['url'] ) : apply_filters( 'the_title', $post->post_title ) 
     1883                        ); 
     1884                } 
     1885                break; 
     1886 
     1887        case 'quote': 
     1888                if ( ! empty( $meta['quote'] ) ) { 
     1889                        $format_output .= sprintf( '<blockquote>%s</blockquote>', $meta['quote'] ); 
     1890                        if ( ! empty( $meta['quote_source'] ) ) { 
     1891                                $format_output .= sprintf( 
     1892                                        '<cite>%s</cite>', 
     1893                                        ! empty( $meta['url'] ) ? 
     1894                                                sprintf( '<a href="%s">%s</a>', esc_url( $meta['url'] ), $meta['quote_source'] ) : 
     1895                                                $meta['quote_source'] 
     1896                                ); 
     1897                        } 
     1898                } 
     1899                break; 
     1900 
     1901        case 'image': 
     1902                if ( ! empty( $meta['image'] ) ) { 
     1903                        $image = is_numeric( $meta['image'] ) ? wp_get_attachment_url( $meta['image'] ) : $meta['image']; 
     1904 
     1905                        $esc_image_url = preg_quote( $image, '#' ); 
     1906                        if ( ! empty( $image ) && ! preg_match( "#src=['\"]{$esc_image_url}#", $content ) ) { 
     1907                                $image_html = sprintf( 
     1908                                        '<img %ssrc="%s" alt="" />', 
     1909                                        empty( $compat['image_class'] ) ? '' : sprintf( 'class="%s" ', $compat['image_class'] ), 
     1910                                        $image 
     1911                                ); 
     1912                                if ( empty( $meta['url'] ) ) { 
     1913                                        $format_output .= $image_html; 
     1914                                } else { 
     1915                                        $format_output .= sprintf( 
     1916                                                '<a href="%s">%s</a>', 
     1917                                                esc_url( $meta['url'] ), 
     1918                                                $image_html 
     1919                                        ); 
     1920                                } 
     1921                        } 
     1922                } 
     1923                break; 
     1924 
     1925        case 'gallery': 
     1926                $matches = preg_match( '/' . get_shortcode_regex() . '/s', $content ); 
     1927                if ( ! $matches || 'gallery' !== $matches[2] ) { 
     1928                        if ( empty( $meta['gallery'] ) && ! empty( $compat['gallery'] ) ) { 
     1929                                $format_output .= $compat['gallery']; 
     1930                        } elseif ( ! empty( $meta['gallery'] ) ) { 
     1931                                $format_output .= $meta['gallery']; 
     1932                        } 
     1933                } 
     1934                break; 
     1935 
     1936        case 'video': 
     1937        case 'audio': 
     1938                $shortcode_regex = '/' . get_shortcode_regex() . '/s'; 
     1939                $matches = preg_match( $shortcode_regex, $content ); 
     1940                if ( ! $matches || $format !== $matches[2] ) { 
     1941                        if ( empty( $meta['media'] ) && ! empty( $compat[$format] ) ) { 
     1942                                $format_output .= $compat[$format]; 
     1943                        } elseif ( ! empty( $meta['media'] ) ) { 
     1944                                // the metadata is a shortcode or an embed code 
     1945                                if ( preg_match( $shortcode_regex, $meta['media'] ) || preg_match( '#<[^>]+>#', $meta['media'] ) ) { 
     1946                                        $format_output .= $meta['media']; 
     1947                                } else { 
     1948                                        $mime_type = wp_check_filetype( $meta['media'] ); 
     1949                                        // URL that can be shortcode'd 
     1950                                        if ( ! empty( $mime_type['type'] ) 
     1951                                                && ( ( 'video' === $format && 'video/mp4' === $mime_type['type'] ) 
     1952                                                        || ( 'audio' === $format && 'audio/mpeg' === $mime_type['type'] ) ) ) { 
     1953                                                $format_output .= sprintf( '[%s src="%s"]', $format, esc_url( $meta['media'] ) ); 
     1954                                        // URL that isn't embeddable outputs string 
     1955                                        } else { 
     1956                                                $format_output .= sprintf( '[embed]%s[/embed]', $meta['media'] ); 
     1957                                        } 
     1958                                } 
     1959                        } 
     1960                } 
     1961                break; 
     1962        case 'standard': 
     1963        case 'status': 
     1964        case 'aside': 
     1965        default: 
     1966                return $content; 
     1967                break; 
     1968        } 
     1969 
     1970        $output = ''; 
     1971        if ( ! empty( $compat['tag'] ) ) 
     1972                $output .= sprintf( '<%s class="%s">', $compat['tag'], $compat['class'] ); 
     1973 
     1974        if ( ! empty( $content ) && $show_content && 'before' !== $compat['position'] ) 
     1975                $output .= $content . PHP_EOL . PHP_EOL; 
     1976 
     1977        $output .= $format_output; 
     1978 
     1979        if ( ! empty( $content ) && $show_content && 'before' === $compat['position'] ) 
     1980                $output .= PHP_EOL . PHP_EOL . $content; 
     1981 
     1982        if ( ! empty( $compat['tag'] ) ) 
     1983                $output .= sprintf( '</%s>', $compat['tag'] );; 
     1984 
     1985        return $output; 
     1986} 
     1987 
     1988/** 
    18051989 * Verifies that an email is valid. 
    18061990 * 
    18071991 * Does not grok i18n domains. Not RFC compliant. 
  • wp-includes/post.php

    diff --git wp-includes/post.php wp-includes/post.php
    index 716447f..b36c208 100644
    function get_post_custom_values( $key = '', $post_id = 0 ) { 
    18991899} 
    19001900 
    19011901/** 
     1902 * Retrieve metadata for current post format 
     1903 * 
     1904 * @since 3.6.0 
     1905 * 
     1906 * @param int $post_id 
     1907 * @return null 
     1908 */ 
     1909function get_post_format_meta( $post_id = 0 ) { 
     1910        $keys = get_post_custom( $post_id ); 
     1911        if ( empty( $keys ) ) 
     1912                return null; 
     1913 
     1914        $values = array(); 
     1915        foreach ( $keys as $key => $value ) { 
     1916                if ( 0 === strpos( $key, '_wp_format_' ) ) { 
     1917                        $slug = str_replace( '_wp_format_', '', $key ); 
     1918                        $values[$slug] = $value[0]; 
     1919                } 
     1920        } 
     1921 
     1922        return $values; 
     1923} 
     1924 
     1925/** 
    19021926 * Check if post is sticky. 
    19031927 * 
    19041928 * Sticky posts should remain at the top of The Loop. If the post ID is not