WordPress.org

Make WordPress Core

Changeset 7700


Ignore:
Timestamp:
04/16/08 21:09:22 (6 years ago)
Author:
markjaquith
Message:

Allow shortcodes to run before or after wpautop()/texturize() formatting. Default to before for WP 2.5 compat. Props AaronCampbell. fixes #6444 for 2.5.1

Location:
branches/2.5/wp-includes
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2.5/wp-includes/formatting.php

    r7594 r7700  
    2727        $curl = $textarr[$i]; 
    2828 
    29         if (isset($curl{0}) && '<' != $curl{0} && '[' != $curl{0} && $next) { // If it's not a tag 
     29        if (isset($curl{0}) && '<' != $curl{0} && '[' != $curl{0} && $next) { // If it's not a tag or shortcode 
    3030            // static strings 
    3131            $curl = str_replace($static_characters, $static_replacements, $curl); 
     
    7575    $pee = preg_replace('/\n?(.+?)(?:\n\s*\n|\z)/s', "<p>$1</p>\n", $pee); // make paragraphs, including one at the end 
    7676    $pee = preg_replace('|<p>\s*?</p>|', '', $pee); // under certain strange conditions it could create a P of entirely whitespace 
     77    $pee = preg_replace('/<p>(\s*?' . get_shortcode_regex(true) . '\s*)<\/p>/s', '$1', $pee); // don't auto-p wrap post-formatting shortcodes 
    7778    $pee = preg_replace('!<p>([^<]+)\s*?(</(?:div|address|form)[^>]*>)!', "<p>$1</p>$2", $pee); 
    7879    $pee = preg_replace( '|<p>|', "$1<p>", $pee ); 
     
    841842        $text = apply_filters('the_content', $text); 
    842843        $text = str_replace(']]>', ']]&gt;', $text); 
     844        $text = preg_replace('|//\s*<!\[CDATA\[|', '<![CDATA[', $text); 
    843845        $text = strip_tags($text); 
    844846        $excerpt_length = 55; 
  • branches/2.5/wp-includes/media.php

    r7672 r7700  
    287287    if ( is_array($size) || empty($size) || empty($imagedata['sizes'][$size]) ) 
    288288        return false; 
    289          
     289 
    290290    $data = $imagedata['sizes'][$size]; 
    291291    // include the full filesystem path of the intermediate file 
     
    301301// returns an array (url, width, height), or false if no image is available 
    302302function wp_get_attachment_image_src($attachment_id, $size='thumbnail', $icon = false) { 
    303      
     303 
    304304    // get a thumbnail or intermediate image if there is one 
    305305    if ( $image = image_downsize($attachment_id, $size) ) 
     
    328328        $html = '<img src="'.attribute_escape($src).'" '.$hwstring.'class="attachment-'.attribute_escape($size).'" alt="" />'; 
    329329    } 
    330      
     330 
    331331    return $html; 
    332332} 
    333333 
    334 add_shortcode('gallery', 'gallery_shortcode'); 
     334add_shortcode('gallery', 'gallery_shortcode', true); 
    335335 
    336336function gallery_shortcode($attr) { 
     
    377377    $columns = intval($columns); 
    378378    $itemwidth = $columns > 0 ? floor(100/$columns) : 100; 
    379      
     379 
    380380    $output = apply_filters('gallery_style', " 
    381381        <style type='text/css'> 
  • branches/2.5/wp-includes/shortcodes.php

    r7594 r7700  
    4848$shortcode_tags = array(); 
    4949 
    50 function add_shortcode($tag, $func) { 
     50function add_shortcode($tag, $func, $after_formatting = false) { 
    5151    global $shortcode_tags; 
    5252 
    53     if ( is_callable($func) ) 
    54         $shortcode_tags[$tag] = $func; 
     53    if ( is_callable($func) ) { 
     54        $shortcode_tags[($after_formatting)? 11:9][$tag] = $func; 
     55    } 
    5556} 
    5657 
     
    5859    global $shortcode_tags; 
    5960 
    60     unset($shortcode_tags[$tag]); 
     61    unset($shortcode_tags[9][$tag], $shortcode_tags[11][$tag]); 
    6162} 
    6263 
     
    6768} 
    6869 
    69 function do_shortcode($content) { 
     70function do_shortcode_after_formatting($content) { 
     71    return do_shortcode($content, true); 
     72} 
     73function do_shortcode($content, $after_formatting = false) { 
     74    $pattern = get_shortcode_regex($after_formatting); 
     75    if (!$pattern) { 
     76        return $content; 
     77    } else { 
     78        $callback_func = 'do_shortcode_tag'; 
     79        if ($after_formatting) 
     80           $callback_func .= '_after_formatting'; 
     81 
     82        return preg_replace_callback('/' . $pattern . '/s', $callback_func, $content); 
     83    } 
     84} 
     85function get_shortcode_regex($after_formatting) { 
    7086    global $shortcode_tags; 
    7187 
    72     if (empty($shortcode_tags) || !is_array($shortcode_tags)) 
    73         return $content; 
     88    if (empty($shortcode_tags[($after_formatting)? 11:9]) || !is_array($shortcode_tags[($after_formatting)? 11:9])) 
     89        return false; 
    7490 
    75     $tagnames = array_keys($shortcode_tags); 
     91    $tagnames = array_keys($shortcode_tags[($after_formatting)? 11:9]); 
    7692    $tagregexp = join( '|', array_map('preg_quote', $tagnames) ); 
    7793 
    78     $pattern = '/\[('.$tagregexp.')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\1\])?/s'; 
    79  
    80     return preg_replace_callback($pattern, 'do_shortcode_tag', $content); 
     94    return '\[('.$tagregexp.')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\1\])?'; 
    8195} 
    8296 
    83 function do_shortcode_tag($m) { 
     97function do_shortcode_tag_after_formatting($m) { 
     98    return do_shortcode_tag($m, true); 
     99} 
     100function do_shortcode_tag($m, $after_formatting = false) { 
    84101    global $shortcode_tags; 
    85102 
     
    89106    if ( isset($m[4]) ) { 
    90107        // enclosing tag - extra parameter 
    91         return call_user_func($shortcode_tags[$tag], $attr, $m[4]); 
     108        return call_user_func($shortcode_tags[($after_formatting)? 11:9][$tag], $attr, $m[4]); 
    92109    } else { 
    93110        // self-closing tag 
    94         return call_user_func($shortcode_tags[$tag], $attr); 
     111        return call_user_func($shortcode_tags[($after_formatting)? 11:9][$tag], $attr); 
    95112    } 
    96113} 
     
    130147} 
    131148 
    132 add_filter('the_content', 'do_shortcode', 11); // AFTER wpautop()  
     149add_filter( 'the_content', 'do_shortcode', 9 ); 
     150add_filter( 'the_content', 'do_shortcode_after_formatting', 11 ); 
    133151 
    134152?> 
Note: See TracChangeset for help on using the changeset viewer.