如果你更新到 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 文件中:
- 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' );
- 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 文件中:
-
- function smilies_reset() {
- global $wpsmiliestrans, $wp_smiliessearch;
-
- 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);
- }
-
- function static_emoji_url() {
- return get_bloginfo('template_directory').'/72x72/';
- }
-
- 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;
- }
温馨提示:本文最后更新于2019年3月19日,已超过 2 年没有更新,如果文章内容或图片资源失效,请留言反馈,模板下载吧会及时处理,谢谢!