WordPress.org

Make WordPress Core

Ticket #1597: 1597.diff

File 1597.diff, 2.4 KB (added by coffee2code, 5 years ago)

Aforementioned patch.

  • wp-includes/formatting.php

     
     1 
    12<?php 
    23/** 
    34 * Main WordPress Formatting API. 
     
    993994        $stacksize = 0; 
    994995        $tagqueue = ''; 
    995996        $newtext = ''; 
    996         $single_tags = array('br', 'hr', 'img', 'input'); // Known single-entity/self-closing tags 
     997        $single_tags = array('area', 'base', 'basefont', 'br', 'col', 'command', 'embed', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param', 'source'); // Known single-entity/self-closing tags 
    997998        $nestable_tags = array('blockquote', 'div', 'span'); // Tags that can be immediately nested within themselves 
    998999 
    9991000        // WP bug fix for comments - in case you REALLY meant to type '< !--' 
     
    10411042 
    10421043                        // Tag Cleaning 
    10431044 
    1044                         // If self-closing or '', don't do anything. 
    1045                         if ( substr($regex[2],-1) == '/' || $tag == '' ) { 
     1045                        // If it's an empty tag "< >", do nothing 
     1046                        if ( '' == $tag ) { 
    10461047                                // do nothing 
    10471048                        } 
     1049                        // ElseIf it presents itself as a self-closing tag... 
     1050                        elseif ( substr($regex[2],-1) == '/' ) { 
     1051                                // ...but it isn't a known single-entity self-closing tag, then don't let it be treated as such and 
     1052                                // immediately close it with a closing tag (the tag will encapsulate no text as a result) 
     1053                                if ( !in_array($tag, $single_tags) ) 
     1054                                        $regex[2] = substr($regex[2], 0, -1) . "></$tag"; 
     1055                        } 
    10481056                        // ElseIf it's a known single-entity tag but it doesn't close itself, do so 
    10491057                        elseif ( in_array($tag, $single_tags) ) { 
    10501058                                $regex[2] .= '/'; 
    1051                         } else {        // Push the tag onto the stack 
     1059                        } 
     1060                        // Else it's not a single-entity tag 
     1061                        else { 
    10521062                                // If the top of the stack is the same as the tag we want to push, close previous tag 
    10531063                                if ( $stacksize > 0 && !in_array($tag, $nestable_tags) && $tagstack[$stacksize - 1] == $tag ) { 
    1054                                         $tagqueue = '</' . array_pop ($tagstack) . '>'; 
     1064                                        $tagqueue = '</' . array_pop($tagstack) . '>'; 
    10551065                                        $stacksize--; 
    10561066                                } 
    1057                                 $stacksize = array_push ($tagstack, $tag); 
     1067                                $stacksize = array_push($tagstack, $tag); 
    10581068                        } 
    10591069 
    10601070                        // Attributes 
    10611071                        $attributes = $regex[2]; 
    10621072                        if( !empty($attributes) ) 
    1063                                 $attributes = ' '.$attributes; 
     1073                                $attributes = ' ' . $attributes; 
    10641074 
    10651075                        $tag = '<' . $tag . $attributes . '>'; 
    10661076                        //If already queuing a close tag, then put this tag on, too