WordPress4.2.2 修复颜文字(Emoji)表情异常无限加载问题

微饭君公众号

WordPress更新到4.2.2了,还是一样的让人操蛋,老外的东西就是比较刻板,不考虑国内的环境,比如Youtube视频快速插入(国内不番茄能播?),再就是这次更新的破emoji表情,也是玩的广大国内博主心伤。

歪国人不知道怎么想的,一个emoji表情还TM要外链,你内置不行?你域名被墙了还一直引用真心感觉累。

升级4.2.2后如果各位的网站速度加载变慢,一直加载中状态大部分与这个有关,下面微饭为大家带来解决方案。

一、关闭颜文字替换功能

在主题的 functions.php 最底部加入以下代码:

 <?php
function disable_emoji_tinymce( $plugins ) {
 return array_diff( $plugins, array( 'wpemoji' ) );
}
 
function remove_emoji() {
 remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
 remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
 remove_action( 'wp_print_styles', 'print_emoji_styles' );
 remove_action( 'admin_print_styles', 'print_emoji_styles' );
 remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
 remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
 remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
 add_filter( 'tiny_mce_plugins', 'disable_emoji_tinymce' );
}
 
add_action( 'init', 'remove_emoji' );
?>

二、恢复至原表情模式

在主题的 functions.php 最底部加入以下代码:

<?php
function smilies_initx() {
 global $wpsmiliestrans, $wp_smiliessearch;
 if ( !get_option( 'use_smilies' ) )
 return;
 
 if ( !isset( $wpsmiliestrans ) ) {
 $wpsmiliestrans = array(
 ':mrgreen:' => 'icon_mrgreen.gif',
 ':neutral:' => 'icon_neutral.gif',
 ':twisted:' => 'icon_twisted.gif',
 ':arrow:' => 'icon_arrow.gif',
 ':shock:' => 'icon_eek.gif',
 ':smile:' => 'icon_smile.gif',
 ':???:' => 'icon_confused.gif',
 ':cool:' => 'icon_cool.gif',
 ':evil:' => 'icon_evil.gif',
 ':grin:' => 'icon_biggrin.gif',
 ':idea:' => 'icon_idea.gif',
 ':oops:' => 'icon_redface.gif',
 ':razz:' => 'icon_razz.gif',
 ':roll:' => 'icon_rolleyes.gif',
 ':wink:' => 'icon_wink.gif',
 ':cry:' => 'icon_cry.gif',
 ':eek:' => 'icon_surprised.gif',
 ':lol:' => 'icon_lol.gif',
 ':mad:' => 'icon_mad.gif',
 ':sad:' => 'icon_sad.gif',
 '8-)' => 'icon_cool.gif',
 '8-O' => 'icon_eek.gif',
 ':-(' => 'icon_sad.gif',
 ':-)' => 'icon_smile.gif',
 ':-?' => 'icon_confused.gif',
 ':-D' => 'icon_biggrin.gif',
 ':-P' => 'icon_razz.gif',
 ':-o' => 'icon_surprised.gif',
 ':-x' => 'icon_mad.gif',
 ':-|' => 'icon_neutral.gif',
 ';-)' => 'icon_wink.gif',
 '8O' => 'icon_eek.gif',
 ':(' => 'icon_sad.gif',
 ':)' => 'icon_smile.gif',
 ':?' => 'icon_confused.gif',
 ':D' => 'icon_biggrin.gif',
 ':P' => 'icon_razz.gif',
 ':o' => 'icon_surprised.gif',
 ':x' => 'icon_mad.gif',
 ':|' => 'icon_neutral.gif',
 ';)' => 'icon_wink.gif',
 ':!:' => 'icon_exclaim.gif',
 ':?:' => 'icon_question.gif',
 );
 }
 if (count($wpsmiliestrans) == 0) {
 return;
 }
 krsort($wpsmiliestrans);
 $spaces = wp_spaces_regexp();
 $wp_smiliessearch = '/(?<=' . $spaces . '|^)';
 $subchar = '';
 foreach ( (array) $wpsmiliestrans as $smiley => $img ) {
 $firstchar = substr($smiley, 0, 1);
 $rest = substr($smiley, 1);
 if ($firstchar != $subchar) {
 if ($subchar != '') {
 $wp_smiliessearch .= ')(?=' . $spaces . '|$)'; // End previous "subpattern"
 $wp_smiliessearch .= '|(?<=' . $spaces . '|^)'; // Begin another "subpattern"
 }
 $subchar = $firstchar;
 $wp_smiliessearch .= preg_quote($firstchar, '/') . '(?:';
 } else {
 $wp_smiliessearch .= '|';
 }
 $wp_smiliessearch .= preg_quote($rest, '/');
 }
 $wp_smiliessearch .= ')(?=' . $spaces . '|$)/m';
}
 
remove_action('init', 'smilies_init', 5);
add_action( 'init' , 'smilies_initx' , 5 );
?>

该代码拥有很好的扩展性,不用担心WordPress升级而失效(前提是不改钩子),比修改WordPress框架来得安全。

本文提供的WordPress代码由微饭收集于网络,作者未知(原作者可联系我注明)。

发表评论
加载中...
  • hillo 10个月前 (09-25)

    :razz: 看看则么实现emoji

  • 虎子 1年前 (2016-05-03)

    :smile: 能显示吗?

  • 艾丝凡 1年前 (2016-03-23)

    :mrgreen: 我来签到啦!签到时间:下午3:40:48,支持微饭,支持分享!~

  • 艾丝凡 1年前 (2016-03-23)

    :grin: 申毛毛

  • w3sun 2年前 (2015-12-03)

    请问 您的代码和行号是如何实现的?

  • 麦叔 2年前 (2015-06-08)

    :smile: 测试

相关文章