评论发表后表情不显示

2022-11-11 19:14:59 浏览数 (1)

小王子和小伙伴们在小区玩时在草丛中抓了几只蚂蚱上来,惊喜地拿上来给我看,对于小时候在老家麦田里经常见到这种害虫的我其实很不喜欢它的,本想着让小王子他们折磨一下,无奈小王子同情心泛滥,只好作罢,毕竟秋后的蚂蚱,蹦跶不了几天了。

好吧,离题了,言归正传,经常来老王这里的朋友应该了解本站评论经历了从纯文字到文字加表情,而表情又从表情图片列表显示到点击才显示表情图片列表,虽然在不断折腾,但一直以来都只有一组表情。而最近老王发现越来越多朋友的网站评论上不仅有表情,而且有好几组表情。怀着别人家那么“富裕”而为什么我们家这么“穷”的心情,想着我们也应该要走上“富裕”的道路。

想到当然就要做,试了好几种方法发现大多数都需要解析后表情图片才会显示,不然都只有提示文字显示,而业余的我又没有找到解决方法,最后终于找到了一个含有解析的案例,直播搬过来用了。 配置完又发现发表评论时表情图片可以在评论框中显示,但发表成功后表情却没有了。于是在网上查找原因,最后才发现数据库编码格式不是utf8mb4,

低版本的MySQL支持的utf8编码,最大字符长度为 3 字节,而MySQL在 5.5.3 之后增加了 utf8mb4 字符编码,mb4即 most bytes 4。简单说 utf8mb4 是 utf8 的超集并完全兼容utf8,能够用四个字节存储更多的字符。

当然他们也有介绍转换方法,大多数是在mysql中使用命令进行配置,但一直比较小(不)心(懂)的我基本都不敢随意修改数据库,害怕万一弄错就悲剧了,好在最后找到一个不用去动数据库并且适用于Wordpress的方法,

将下面的代码添加到主题functions.php里面。

PHP

代码语言:javascript复制
function update_db_to_utf8mb4() {
if (!isset($_GET['update-utf8bm4'])) {
return;
}

require_once( ABSPATH . 'wp-admin/includes/upgrade.php');
/** WordPress Administration API */
require_once(ABSPATH . 'wp-admin/includes/admin.php');
/** WordPress Schema API */
require_once(ABSPATH . 'wp-admin/includes/schema.php');
$tables = $wpdb->tables('all');
if (!wp_should_upgrade_global_tables()) {
$global_tables = $wpdb->tables('global');
$tables = array_diff_assoc($tables, $global_tables);
}
foreach ($tables as $table) {
maybe_convert_table_to_utf8mb4($table);
}
}
add_action('wp_loaded', 'update_db_to_utf8mb4');

访问下列地址:

https://域名/?update-utf8bm4=1

其实打开地址我什么也没有看见,但重新发表评论插入表情并发布时发现表情可以显示了。

不过还有一个问题,因为表情来源于网络,涉及到json文件中alias等原因,暂时没有深入研究和折腾,所以会出现如阿和留言所说的表情比较丑,但和阿和一起测试发现貌似和所用系统有关,正如我这边macOS看着可以,也许你那里看到会是另外一种。

阿和2020-10-16 10:32:22

原来真的加了表情啊,,,只是选择的表情是正常的,显示的表情就太丑了吧。。。

0 人点赞