删除 WordPress 4.2 颜文字(Emoji)表情系统并恢复原有表情

iEdon 最近非常高兴地升级了 WordPress 4.2,本以为和往常一样没有什么特别的,无非就是些修修补补。

没想到这一升级,就出现了各种 500 错误,然后发现打开博客变慢了,Chrome 一直显示正在建立加密连接。iEdon 感到非常奇怪,加密服务器除了百度统计、七牛缓存也没有什么会拖慢速度的,于是 F12 进行调查,发现系统正在加载 wp.com 的东西,这T.M被和.谐的东西怎么可能会被打开呢?

于是手贱开启了网页源,我去!插入了一坨 WP 自带的头信息。但是,iEdonX 主题已经将大多数不必要的 HTTP 删除了,怎么还是会出现问题呢?原来,新版 WordPress 4.2 版本引入了新的表情系统 —— 颜文字表情(也就是我们QQ上用烂了的 Emoji)。这样一来,非但没有多大用处,而且网页加载缓慢,评论表情无法显示,于是赶快参照大神的方法,增减钩子,和.谐之。

关闭颜文字的办法:

代码参照自 9sep.org:

 <?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 4.2 版本吧,目前开来也有较多问题。说不定颜文字系统后续还会有优化。不过就目前而言,颜文字表情系统对国人来说用处一点都不大,所以升级了版本就把上述代码加进去,免得大姨妈。


52 responses to “删除 WordPress 4.2 颜文字(Emoji)表情系统并恢复原有表情”

  1. 4.2还得再考虑考虑 问题还不少

    1. 大概也就几处要改一改。反正最后还是要升级的。

    2. 怎么哪都能看到你啊~~ 😆

      1. 我有那么出名么 😆

  2. 不知道 4.2 这帮人干了什么事情,更新完之后各种主题插件出各种奇葩BUG,哎……

    1. 我觉得主要是两个方面要修改。
      第一个就是颜文字引用了墙外的东西,第二就是 Gravatar 相关函数变动。
      不过改起来是挺折腾的。????

  3. 现在都不关心wordpress在更新什么。。。

    1. 最好关心一下,有时候 WordPress 的更新确实很纠人。

    1. 与其说删除,倒不如说两者兼得
      经过测试,发现在支持 Emoji 的浏览器上,Emoji 可以正常显示而不用加载复杂的HEAD ????

  4. 我更新了4.2,没看到加载wp.com的东西啊。。

    1. 那应该还是 Gravatar 的问题。
      对你的主题没影响。我的受过了影响。

  5. 为什么我的没有报错过……

    1. 你的主题功能很强大,评论系统是深度开发过的,不使用传统表情,所以没有碰到这个问题。而且集成QQ登录,值得学习哇呀。

      1. 你这主题也不错啊,挺清爽滴!

  6. 你的第一个方法加在哪个文件中?

    1. 主题目录下的 functions.php 中。

  7. 4.2这个版,发布没多久又更新了。听说有漏洞呢!

    1. 上次才更新4.2.1
      昨天又升 4.2.2 了

      1. 对啊,我的没有关闭core自动更新,每次自动更新都是看到邮件才知道已经更新过了。

      2. 懒得关,反正自动更新一般没坏处
        还可以及时修复网站漏洞,倒也不错 😆

  8. 退wp用ty保平安。

  9. WordPress也不适应我大天朝啊。。。

    1. 那就需要我朝用户适应WordPress,咳咳。

  10. 超级efly Avatar
    超级efly

    前來支持一下~

    1. 谢谢支持,亲

Leave a Reply to iEdon Cancel reply

Your email address will not be published. Required fields are marked *