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.


Built from https://develop.svn.wordpress.org/trunk@41046


git-svn-id: http://core.svn.wordpress.org/trunk@40896 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Gary Pendergast 2017-07-14 12:45:44 +00:00
parent 0fcd27ec31
commit ecec228c50
2 changed files with 15 additions and 5 deletions

View File

@ -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 );

View File

@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '4.9-alpha-41045';
$wp_version = '4.9-alpha-41046';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.