From dac056e1351682c2139189f7c341f2513a5efe2e Mon Sep 17 00:00:00 2001 From: Gary Pendergast Date: Fri, 14 Jul 2017 12:44:49 +0000 Subject: [PATCH] Emoji: Store the results of the `emoji_url` and `emoji_ext` filters in statics. Previously, these filters were being run once per post, but the changes in [41043] caused them to be run once per emoji found. We will not stand idly by while this kind of unfair performance penalty is placed on the emoji literate. The filters are now run once only, emoji aficionados everywhere can rest easy, knowing their posts will be just as performant as their emoji-less cousins. Props ocean90 for noticing this severe oversight. See #35293. git-svn-id: https://develop.svn.wordpress.org/trunk@41046 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/formatting.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/wp-includes/formatting.php b/src/wp-includes/formatting.php index c708a26e98..a1bb56cb6b 100644 --- a/src/wp-includes/formatting.php +++ b/src/wp-includes/formatting.php @@ -5192,15 +5192,25 @@ function wp_staticize_emoji( $text ) { * @since 4.8.1 * @access private * + * @see wp_staticize_emoji() + * @staticvar string $cdn_url The CDN url returned by the {@see 'emoji_url'} filter. + * @staticvar string $ext The file extension returned by the {@see 'emoji_ext'} filter. + * * @param array $matches The matched data. * @return string HTML for the static emoji image. */ function _wp_staticize_emoji( $matches ) { - /** This filter is documented in wp-includes/formatting.php */ - $cdn_url = apply_filters( 'emoji_url', 'https://s.w.org/images/core/emoji/2.3/72x72/' ); + static $cdn_url; + if ( ! $cdn_url ) { + /** This filter is documented in wp-includes/formatting.php */ + $cdn_url = apply_filters( 'emoji_url', 'https://s.w.org/images/core/emoji/2.3/72x72/' ); + } - /** This filter is documented in wp-includes/formatting.php */ - $ext = apply_filters( 'emoji_ext', '.png' ); + static $ext; + if ( ! $ext ) { + /** This filter is documented in wp-includes/formatting.php */ + $ext = apply_filters( 'emoji_ext', '.png' ); + } $char = str_replace( ';&#x', '-', $matches[1] ); $char = str_replace( array( '&#x', ';'), '', $char );