WordPress.org

Make WordPress Core

Ticket #24263: 24263.3.patch

File 24263.3.patch, 1.9 KB (added by a.hoereth, 5 years ago)

Applying selected shortcodes when rendering diffs

  • wp-includes/wp-diff.php

     
    154154                $r = '';
    155155                foreach ($lines as $line) {
    156156                        if ( $encode )
    157                                 $line = wp_kses_post( $line );
     157                                $line = $this->prepare_line( $line );
    158158                        if ( $this->_show_split_view ) {
    159159                                $r .= '<tr>' . $this->emptyLine() . $this->emptyLine() . $this->addedLine( $line ) . "</tr>\n";
    160160                        } else {
     
    176176                $r = '';
    177177                foreach ($lines as $line) {
    178178                        if ( $encode )
    179                                 $line = wp_kses_post( $line );
     179                                $line = $this->prepare_line( $line );
    180180                        if ( $this->_show_split_view ) {
    181181                                $r .= '<tr>' . $this->deletedLine( $line ) . $this->emptyLine() . $this->emptyLine() . "</tr>\n";
    182182                        } else {
     
    199199                $r = '';
    200200                foreach ($lines as $line) {
    201201                        if ( $encode )
    202                                 $line = wp_kses_post( $line );
     202                                $line = $this->prepare_line( $line );
    203203                        if (  $this->_show_split_view ) {
    204204                                $r .= '<tr>' . $this->contextLine( $line ) . $this->emptyLine() . $this->contextLine( $line )  . "</tr>\n";
    205205                        } else {
     
    210210        }
    211211
    212212        /**
     213         * Prepares lines for printing. Applies shortcodes and wp_kses_post.
     214         *
     215         * @since 3.6.0
     216         * @see do_shortcode() in wp-includes/shortcodes.php
     217         * @see get_shortcode_regex() in wp-includes/shortcodes.php
     218         */
     219        private function prepare_line( $line ) {
     220                $tags = join( '|', array( 'gallery', 'wp_caption', 'caption' ) );
     221                $shortcodes_regex = "\\[(\\[?)($tags)(?![\\w-])([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*+(?:\\[(?!\\/\\2\\])[^\\[]*+)*+)\\[\\/\\2\\])?)(\\]?)";
     222                return preg_replace_callback( "/{$shortcodes_regex}/s", 'do_shortcode_tag', wp_kses_post( $line ) );
     223        }
     224
     225        /**
    213226         * Process changed lines to do word-by-word diffs for extra highlighting.
    214227         *
    215228         * (TRAC style) sometimes these lines can actually be deleted or added rows.