WordPress.org

Make WordPress Core

Ticket #23347: 23347.4.diff

File 23347.4.diff, 6.9 KB (added by beaulebens, 8 years ago)

Removed the chat fallback entirely, until we can decide what to do with it. Also bailed earlier in the function for aside/status formats.

  • wp-includes/default-filters.php

     
    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

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