From 5468377d3e092c4b12d2bacd338db68ed0b7fca2 Mon Sep 17 00:00:00 2001 From: Andrew Nacin Date: Tue, 4 Mar 2014 07:11:13 +0000 Subject: [PATCH] Bail early from shortcode functions if no delimiter is present. This is a significant performance improvement for processing content without shortcodes, and only the slightest hit when content contains shortcodes (which must then undergo processing anyway). Performance results on the ticket. props TobiasBg. fixes #23855. Built from https://develop.svn.wordpress.org/trunk@27394 git-svn-id: http://core.svn.wordpress.org/trunk@27242 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/shortcodes.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/wp-includes/shortcodes.php b/wp-includes/shortcodes.php index 0b2b7327ff..15f8561d5b 100644 --- a/wp-includes/shortcodes.php +++ b/wp-includes/shortcodes.php @@ -155,6 +155,10 @@ function shortcode_exists( $tag ) { * @return boolean */ function has_shortcode( $content, $tag ) { + if ( false === strpos( $content, '[' ) ) { + return false; + } + if ( shortcode_exists( $tag ) ) { preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER ); if ( empty( $matches ) ) @@ -186,6 +190,10 @@ function has_shortcode( $content, $tag ) { function do_shortcode($content) { global $shortcode_tags; + if ( false === strpos( $content, '[' ) ) { + return $content; + } + if (empty($shortcode_tags) || !is_array($shortcode_tags)) return $content; @@ -375,6 +383,10 @@ function shortcode_atts( $pairs, $atts, $shortcode = '' ) { function strip_shortcodes( $content ) { global $shortcode_tags; + if ( false === strpos( $content, '[' ) ) { + return $content; + } + if (empty($shortcode_tags) || !is_array($shortcode_tags)) return $content;