Ticket #6444: 6444.004.diff
| File 6444.004.diff, 5.8 KB (added by , 18 years ago) |
|---|
-
formatting.php
26 26 for ( $i = 0; $i < $stop; $i++ ) { 27 27 $curl = $textarr[$i]; 28 28 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 30 30 // static strings 31 31 $curl = str_replace($static_characters, $static_replacements, $curl); 32 32 // regular expressions … … 74 74 $pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates 75 75 $pee = preg_replace('/\n?(.+?)(?:\n\s*\n|\z)/s', "<p>$1</p>\n", $pee); // make paragraphs, including one at the end 76 76 $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 77 78 $pee = preg_replace('!<p>([^<]+)\s*?(</(?:div|address|form)[^>]*>)!', "<p>$1</p>$2", $pee); 78 79 $pee = preg_replace( '|<p>|', "$1<p>", $pee ); 79 80 $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee); // don't pee all over a tag … … 840 841 $text = get_the_content(''); 841 842 $text = apply_filters('the_content', $text); 842 843 $text = str_replace(']]>', ']]>', $text); 844 $text = preg_replace('|//\s*<!\[CDATA\[|', '<![CDATA[', $text); 843 845 $text = strip_tags($text); 844 846 $excerpt_length = 55; 845 847 $words = explode(' ', $text, $excerpt_length + 1); -
shortcodes.php
47 47 48 48 $shortcode_tags = array(); 49 49 50 function add_shortcode($tag, $func ) {50 function add_shortcode($tag, $func, $after_formatting = false) { 51 51 global $shortcode_tags; 52 52 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 } 55 56 } 56 57 57 58 function remove_shortcode($tag) { 58 59 global $shortcode_tags; 59 60 60 unset($shortcode_tags[ $tag]);61 unset($shortcode_tags[9][$tag], $shortcode_tags[11][$tag]); 61 62 } 62 63 63 64 function remove_all_shortcodes() { … … 66 67 $shortcode_tags = array(); 67 68 } 68 69 69 function do_shortcode($content) { 70 function do_shortcode_after_formatting($content) { 71 return do_shortcode($content, true); 72 } 73 function 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 } 85 function get_shortcode_regex($after_formatting) { 70 86 global $shortcode_tags; 71 87 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; 74 90 75 $tagnames = array_keys($shortcode_tags );91 $tagnames = array_keys($shortcode_tags[($after_formatting)? 11:9]); 76 92 $tagregexp = join( '|', array_map('preg_quote', $tagnames) ); 77 93 78 $pattern = '/\[('.$tagregexp.')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\1\])?/s'; 94 return '\[('.$tagregexp.')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\1\])?'; 95 } 79 96 80 return preg_replace_callback($pattern, 'do_shortcode_tag', $content); 97 function do_shortcode_tag_after_formatting($m) { 98 return do_shortcode_tag($m, true); 81 99 } 82 83 function do_shortcode_tag($m) { 100 function do_shortcode_tag($m, $after_formatting = false) { 84 101 global $shortcode_tags; 85 102 86 103 $tag = $m[1]; … … 88 105 89 106 if ( isset($m[4]) ) { 90 107 // 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]); 92 109 } else { 93 110 // 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); 95 112 } 96 113 } 97 114 … … 129 146 return $out; 130 147 } 131 148 132 add_filter('the_content', 'do_shortcode', 11); // AFTER wpautop() 149 add_filter( 'the_content', 'do_shortcode', 9 ); 150 add_filter( 'the_content', 'do_shortcode_after_formatting', 11 ); 133 151 134 152 ?> -
media.php
285 285 286 286 if ( is_array($size) || empty($size) || empty($imagedata['sizes'][$size]) ) 287 287 return false; 288 288 289 289 $data = $imagedata['sizes'][$size]; 290 290 // include the full filesystem path of the intermediate file 291 291 if ( empty($data['path']) && !empty($data['file']) ) { … … 299 299 // get an image to represent an attachment - a mime icon for files, thumbnail or intermediate size for images 300 300 // returns an array (url, width, height), or false if no image is available 301 301 function wp_get_attachment_image_src($attachment_id, $size='thumbnail', $icon = false) { 302 302 303 303 // get a thumbnail or intermediate image if there is one 304 304 if ( $image = image_downsize($attachment_id, $size) ) 305 305 return $image; … … 326 326 $size = join('x', $size); 327 327 $html = '<img src="'.attribute_escape($src).'" '.$hwstring.'class="attachment-'.attribute_escape($size).'" alt="" />'; 328 328 } 329 329 330 330 return $html; 331 331 } 332 332 333 add_shortcode('gallery', 'gallery_shortcode' );333 add_shortcode('gallery', 'gallery_shortcode', true); 334 334 335 335 function gallery_shortcode($attr) { 336 336 global $post; … … 375 375 $captiontag = tag_escape($captiontag); 376 376 $columns = intval($columns); 377 377 $itemwidth = $columns > 0 ? floor(100/$columns) : 100; 378 378 379 379 $output = apply_filters('gallery_style', " 380 380 <style type='text/css'> 381 381 .gallery {