WordPress.org

Make WordPress Core

Ticket #24263: 24263.3.patch

File 24263.3.patch, 1.9 KB (added by a.hoereth, 12 months 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.