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
This commit is contained in:
Gary Pendergast 2017-07-14 12:44:49 +00:00
parent 4bad064c24
commit dac056e135

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