WordPress.org

Make WordPress Core

Ticket #11257: ticket-11257-v3.patch

File ticket-11257-v3.patch, 2.8 KB (added by miqrogroove, 5 years ago)

Alternative patch design with changes suggested by azaozz.

  • formatting.php

     
    173173 * or 'false'. 
    174174 * 
    175175 * @since 0.71 
     176 * @uses $shortcode_tags 
    176177 * 
    177178 * @param string $pee The text which has to be formatted. 
    178179 * @param int|bool $br Optional. If set, this will convert all remaining line-breaks after paragraphing. Default true. 
    179180 * @return string Text which has been converted into correct paragraph tags. 
    180181 */ 
    181182function wpautop($pee, $br = 1) { 
     183        global $shortcode_tags; 
     184 
    182185        if ( trim($pee) === '' ) 
    183186                return ''; 
    184187        $pee = $pee . "\n"; // just to make things a little easier, pad the end 
     
    216219        if (strpos($pee, '<pre') !== false) 
    217220                $pee = preg_replace_callback('!(<pre[^>]*>)(.*?)</pre>!is', 'clean_pre', $pee ); 
    218221        $pee = preg_replace( "|\n</p>$|", '</p>', $pee ); 
    219         $pee = preg_replace('/<p>\s*?(' . get_shortcode_regex() . ')\s*<\/p>/s', '$1', $pee); // don't auto-p wrap shortcodes that stand alone 
    220222 
     223        // don't auto-p wrap shortcodes that stand alone 
     224        $tagnames = array_keys($shortcode_tags); 
     225        $tagregexp = join( '|', array_map('preg_quote', $tagnames) ); 
     226        $pee = preg_replace('/<p>\\s*?(.?\\[('.$tagregexp.')\\b.*?\\/?\\](?:.+?\\[\\/\\2\\])?.?)\\s*<\\/p>/s', '$1', $pee); 
     227 
    221228        return $pee; 
    222229} 
    223230 
  • shortcodes.php

     
    176176        $tagregexp = join( '|', array_map('preg_quote', $tagnames) ); 
    177177 
    178178        // WARNING! Do not change this regex without changing do_shortcode_tag() and strip_shortcodes() 
    179         return '(.?)\[('.$tagregexp.')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?(.?)'; 
     179        return '(.?)\\[('.$tagregexp.')\\b(.*?)\\/?\\](?:(.+?)\\[\\/\\2\\])?(.?)'; 
    180180} 
    181181 
    182182/** 
     
    194194        global $shortcode_tags; 
    195195 
    196196        // allow [[foo]] syntax for escaping a tag 
    197         if ($m[1] == '[' && $m[6] == ']') { 
     197        if ($m[1] == '[' && $m[5] == ']') { 
    198198                return substr($m[0], 1, -1); 
    199199        } 
    200200 
    201201        $tag = $m[2]; 
    202202        $attr = shortcode_parse_atts($m[3]); 
    203203 
    204         if ( isset($m[5]) ) { 
     204        if ( isset($m[4]) ) { 
    205205                // enclosing tag - extra parameter 
    206                 return $m[1] . call_user_func($shortcode_tags[$tag], $attr, $m[5], $m[2]) . $m[6]; 
     206                return $m[1] . call_user_func($shortcode_tags[$tag], $attr, $m[4], $m[2]) . $m[5]; 
    207207        } else { 
    208208                // self-closing tag 
    209                 return $m[1] . call_user_func($shortcode_tags[$tag], $attr, NULL, $m[2]) . $m[6]; 
     209                return $m[1] . call_user_func($shortcode_tags[$tag], $attr, NULL, $m[2]) . $m[5]; 
    210210        } 
    211211} 
    212212 
     
    290290 
    291291        $pattern = get_shortcode_regex(); 
    292292 
    293         return preg_replace('/'.$pattern.'/s', '$1$6', $content); 
     293        return preg_replace('/'.$pattern.'/s', '$1$5', $content); 
    294294} 
    295295 
    296296add_filter('the_content', 'do_shortcode', 11); // AFTER wpautop() 
    297297 
    298 ?> 
    299  No newline at end of file 
     298?>