前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WordPress 如何存储和显示 Emoji 以及如何优化

WordPress 如何存储和显示 Emoji 以及如何优化

作者头像
Denis
发布2023-04-13 13:35:46
7120
发布2023-04-13 13:35:46
举报
文章被收录于专栏:WordPress果酱WordPress果酱

首先说明一下 Emoji 是文字,而不是图标,所以 Emoji 字符是 Unicode 字符集中一部分,特定形象的 Emoji 表情符号对应到特定的 Unicode 字节。

Emoji 存储需要四个字节

使用 Emoji 最大的问题是数据库存储不了,出错或者出现乱码,这是因为MySQL 的 UTF-8 字符集是存储不了 emoji 表情,因为 MySQL 中的 UTF-8 只用 3 个字节存储,所以存储不了表情,其实 MySQL 的 UTF-8 其实是 utf8mb3 的别名。

如果我们要存储 Emoji 表情,那么需要支持完整的 UTF-8 字符集,就是需要使用 4 个字节来存储字符,这个字符集名字叫 utf8mb4。

WordPress 如何存储和显示 Emoji

针对 Emoji,WordPress 在存储和显示这两方面做了处理,

WordPress 为了都能存储 Emoji,使用函数 wp_encode_emoji 函数将 Emoji 转换成 HTML 实体来存储,这样就不用担心数据库不支持 utf8mb4。

WordPress 为了都能显示 Emoji,使用函数 wp_staticize_emoji 函数将 Emoji 转换成图片显示,这样就不用担一些比较老旧的浏览器不显示 Emoji。

优化 WordPress Emoji 的处理

但是随着技术的发展,现在绝大部分服务器的 MySQL 数据库(5.5版本之后)都支持 utf8mb4 编码格式,所以无需将 Emoji 转换成 HTML 实体进行存储了,直接存储速度更快,节省了实体转换的时间消耗。

另外 WordPress 用于显示的 Emoji 的图片都是放在 http://s.w.org/images/core/emoji/ 资源下,令人尴尬的是,http://s.w.org/ 这个域名在国内访问不了的,这个功能反而成为了拖慢博客显示的原因了。

现在几乎所有的浏览器都能够显示 Emoji 了,所以我们完全可以禁用 WordPress 对 Emoji 的处理功能,比较简单,我已经整理好了,在当前主题的 functions.php 文件中添加如下代码即可:

代码语言:javascript
复制
remove_action('admin_print_scripts',	'print_emoji_detection_script');
remove_action('admin_print_styles',	'print_emoji_styles');

remove_action('wp_head',		'print_emoji_detection_script',	7);
remove_action('wp_print_styles',	'print_emoji_styles');

remove_action('embed_head',		'print_emoji_detection_script');

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( 'emoji_svg_url',		'__return_false' );
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Emoji 存储需要四个字节
  • WordPress 如何存储和显示 Emoji
  • 优化 WordPress Emoji 的处理
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档