WordPress.org

Make WordPress Core

Ticket #8553: 8553.diff

File 8553.diff, 1.1 KB (added by Denis-de-Bernardy, 9 years ago)
  • Users/denis/Sites/sem-pro/wp-includes/shortcodes.php

     
    162162 *
    163163 * @return string The shortcode search regular expression
    164164 */
    165 function get_shortcode_regex() {
     165function get_shortcode_regex($backtrace = false) {
    166166        global $shortcode_tags;
    167167        $tagnames = array_keys($shortcode_tags);
    168168        $tagregexp = join( '|', array_map('preg_quote', $tagnames) );
    169 
    170         return '\[('.$tagregexp.')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\1\])?';
     169       
     170        if ( $backtrace ) {
     171                return '\[('.$tagregexp.')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\1\])?';
     172        } else {
     173                return '\[('.$tagregexp.')\b(?:.*?)?\](?:.+?\[\/\1\])?';
     174        }
    171175}
    172176
    173177/**
     
    182186 */
    183187function do_shortcode_tag($m) {
    184188        global $shortcode_tags;
    185 
     189       
     190        static $pattern;
     191       
     192        if ( !isset($pattern) )
     193                $pattern = get_shortcode_regex(true);
     194       
     195        preg_match('/' . $pattern . '/s', $m[0], $m);
     196       
    186197        $tag = $m[1];
    187198        $attr = shortcode_parse_atts($m[2]);
    188199