各地市:
郑州网站建设 洛阳网站建设 开封网站建设 安阳网站建设 新乡网站建设 濮阳网站建设 焦作网站建设 鹤壁网站建设 三门峡网站建设 商丘网站建设 许昌网站建设 漯河网站建设 平顶山网站建设 驻马店网站建设 周口网站建设 南阳网站建设 信阳网站建设 济源网站建设 二七区网站建设 中原区网站建设 管城区网站建设 惠济区网站建设 金水区网站建设 上街区网站建设 巩义市网站建设 新密市网站建设 登封市网站建设 荥阳市网站建设 中牟县网站建设 经开区网站建设 高新区网站建设 涧西区网站建设 西工区网站建设 老城区网站建设 瀍河回族区网站建设 洛龙区网站建设 吉利区网站建设 偃师市网站建设 孟津县网站建设 新安县网站建设 洛宁县网站建设 宜阳县网站建设 伊川县网站建设 嵩县网站建设 栾川县网站建设 汝阳县网站建设 杞县网站建设 兰考县网站建设 通许县网站建设 尉氏县网站建设 开封县网站建设 金明区网站建设 顺河回族区网站建设 龙亭区网站建设 鼓楼区网站建设 禹王台区网站建设 安阳县网站建设 林州市网站建设 内黄县网站建设 汤阴县网站建设 滑县网站建设 龙安区网站建设 殷都区网站建设 文峰区网站建设 北关区网站建设 辉县市网站建设 卫辉市网站建设 新乡县网站建设 获嘉县网站建设 原阳县网站建设 延津县网站建设 封丘县网站建设 长垣县网站建设 卫滨区网站建设 红旗区网站建设 牧野区网站建设 凤泉区网站建设 华龙区网站建设 清丰县网站建设 南乐县网站建设 濮阳县网站建设 莘县网站建设 范县网站建设 台前县网站建设
当前位置: 主页 > 建站知识 > 技术支持 > 博客cms >

WordPress 4.2后 头部多出的Emoji表情的处

发布时间:2017-05-08 22:57 | 发布者:往流科技 | 浏览次数:

如果你更新到 wordpress 的 4.2 版本,查看网页源代码你会发现 WordPress 会自动在加载一段用于支持 emjo 表情的脚本(JS+CSS)。对于大部分人来说,这个是十分鸡肋的功能,再加上 GFW 的强大力量,反而影响加载速度。

我们有两种解决方法:启用或禁用。

原因分析

脚本就是类似下面的代码:

<script?type="text/javascript">?window._wpemojiSettings?=?{"baseUrl":"http:\/\/s.w.org\/images\/core\/emoji\/72x72\/","ext":".png","source":{"concatemoji":"http:\/\/devework.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.2"}};?!function(a,b,c){function?d(a){var?c=b.createElement("canvas"),d=c.getContext&&c.getContext("2d");return?d&&d.fillText?(d.textBaseline="top",d.font="600?32px?Arial","flag"===a?(d.fillText(String.fromCharCode(55356,56812,55356,56807),0,0),c.toDataURL().length>3e3):(d.fillText(String.fromCharCode(55357,56835),0,0),0!==d.getImageData(16,16,1,1).data[0])):!1}function?e(a){var?c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var?f;c.supports={simple:d("simple"),flag:d("flag")},c.supports.simple&&c.supports.flag||(f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);?</script>?<style?type="text/css">?img.wp-smiley,?img.emoji?{?display:?inline?!important;?border:?none?!important;?box-shadow:?none?!important;?height:?1em?!important;?width:?1em?!important;?margin:?0?.07em?!important;?vertical-align:?-0.1em?!important;?background:?none?!important;?padding:?0?!important;?}?</style>

因为WordPress 更新 4.2 的一个新增功能就是支持 emjo 表情,但看部分加载源居然是 wp.org 的 js 文件。对于大部分人来说,这个是十分鸡肋的功能。

禁用:移除 WordPress 4.2 中前台自动加载的 emoji 脚本

既然功能鸡肋,不如直接移除掉来得更加快捷。代码提取自 Disable Emojis 插件,可以放在主题目录下的 functions.php 文件中:

/**?*?Disable?the?emoji's?*/?function?disable_emojis()?{?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_emojis_tinymce'?);?}?add_action(?'init',?'disable_emojis'?);/**?*?Filter?function?used?to?remove?the?tinymce?emoji?plugin.?*/?function?disable_emojis_tinymce(?$plugins?)?{?if?(?is_array(?$plugins?)?)?{?return?array_diff(?$plugins,?array(?'wpemoji'?)?);?}?else?{?return?array();?}?}

启用:转存至本地调用 Emoji 表情

WordPress 官方将此功能会写入正式版一定有其理由。但我们知道 WP 的 CDN 早就被*掉,唯一方法就是转存到本地,使 WP 识别本地 Emoji 表情。

Twitter Emoji 表情包下载,下载后直接解压至主题目录,文件夹名不变。将以下代码放在主题目录下的 functions.php 文件中:

//首先补全wp的表情库?function?smilies_reset()?{?global?$wpsmiliestrans,?$wp_smiliessearch;?//?don't?bother?setting?up?smilies?if?they?are?disabled?if?(!get_option('use_smilies'))?{?return;?}?$wpsmiliestrans_fixed?=?array(?':mrgreen:'?=>?"\xf0\x9f\x98\xa2",?':smile:'?=>?"\xf0\x9f\x98\xa3",?':roll:'?=>?"\xf0\x9f\x98\xa4",?':sad:'?=>?"\xf0\x9f\x98\xa6",?':arrow:'?=>?"\xf0\x9f\x98\x83",?':-('?=>?"\xf0\x9f\x98\x82",?':-)'?=>?"\xf0\x9f\x98\x81",?':('?=>?"\xf0\x9f\x98\xa7",?':)'?=>?"\xf0\x9f\x98\xa8",?':?:'?=>?"\xf0\x9f\x98\x84",?':!:'?=>?"\xf0\x9f\x98\x85",?);?$wpsmiliestrans?=?array_merge($wpsmiliestrans,?$wpsmiliestrans_fixed);?}?//替换cdn路径?function?static_emoji_url()?{?return?get_bloginfo('template_directory').'/72x72/';?}?//让文章内容和评论支持?emoji?并禁用?emoji?加载的乱七八糟的脚本?function?reset_emojis()?{?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');?add_filter('the_content',?'wp_staticize_emoji');?add_filter('comment_text',?'wp_staticize_emoji',50);?//在转换为表情后再转为静态图片?smilies_reset();?add_filter('emoji_url',?'static_emoji_url');?}?add_action('init',?'reset_emojis');?//输出表情?function?fa_get_wpsmiliestrans(){?global?$wpsmiliestrans;?$wpsmilies?=?array_unique($wpsmiliestrans);?foreach($wpsmilies?as?$alt?=>?$src_path){?$emoji?=?str_replace(array('&#x',?';'),?'',?wp_encode_emoji($src_path));?$output?.=?'<a?class="add-smily"?data-smilies="'.$alt.'"><img?class="wp-smiley"?src="'.get_bloginfo('template_directory').'/72x72/'.?$emoji?.'png"?/></a>';?}?return?$output;?}