上一篇文章写到了 WordPress 升级4.2版本后部分主题出现了大量404请求的问题,匆忙解决也没深究原因。今天继续调试主题却发现了评论表情不显示了,看来又是4.2惹的祸了!

于是埋头折腾,总算把问题解决了,为了方便遇到和我一样问题的站长,张戈特意将修复方法整理成PHP补丁,降低修复难度,如果你也遇到此类问题,且往下看。

一、前因后果

这次 WordPress 升级4.2总体来说没有以前版本升级来得顺畅,目前已发现如下3个问题:

  1. 有部分主题的前台会产生大量的404错误请求(站外资源);
  2. 评论表情名称变更导致表情无法显示或者无法通过钩子更改;
  3. 外观–>菜单–>显示选项–>点不出来(已有修复方法,猛戳直达==>)。

第 1 个问题:分析了一下原因,和以前出现的谷歌字体加载卡出翔的情况类似,部分主题可能触发了4.2新增的CDN功能,在前台插入了国外CDN资源,不巧却被厚实 GFW 关门闭客了,而且居然还有重试机制,于是就产生了大量的错误请求!

第 2 个问题:其实是因为 4.2 对评论表情的重构(样式变更、名称变更、CDN机制等)造成的。和第 1 个问题有所关联,都不约而同的和 4.2 下的 emoji 关键标签挂上了钩。emoji 这个玩意我暂时还没有去研究是啥新玩意,但从目前的情况来看,这个玩意暂时不适合天朝环境。。。

张戈博客上一篇文章《解决WordPress升级4.2后调用国外图片导致大量404请求的问题》已经粗略分享了解决办法,不过在下文中还会分享一个整体修复补丁。

正对第 2 个问题,下面说一下手动修复方法。

二、修复思路

表情名称重构了,所以我们需要找到那个表情过滤函数,然后改变它。我们知道评论表情里面有名为 mrgreen 的表情代号,所以最笨最有效的方法就是在 WordPress 全局搜索存在这个关键词的 php 文件(可以在 Linux 下grep,也可以在 Windows 下借用 UE 或 Editor ++等),幸不辱命,总算顺藤摸瓜找到症结所在!

①、表情名称变更

问题截图:

通过搜索,我找到了这个将代号过滤成表情文件的函数 smilies_init ,位于 wp-includes/functions.php 文件中。

老版本代码:

新版本代码:

明显把文件名称给改了,所以修复方法就是用老版代码替换新版本代码即可。

②、表情尺寸异常

解决表情不显示问题之后,发现这表情尺寸也醉了:

先让我感叹一下,老外的视力素质真的都这么好吗?反正我是觉得太小了。。。

还是老方法,全局搜索 height: 1em; max-height: 1em ,立竿见影!在 wp-includes/formatting.php 找到3处相关代码。

先手动修改后发现还是不凑效,于是继续检查,发现网站前台还输出了一个表情样式定义:

于是继续全局搜索以上代码中的关键词,于是又找到了 print_emoji_styles() 函数,在通过函数名找到调用地方,手动注释后发现可以解决问题:

接下来就是发现问题就依葫芦画瓢解决问题问题的过程,最终全部搞定!

动手能力强的朋友估计已经去折腾去了,如果你觉得这样很麻烦,那就继续往下看吧!

三、修复补丁

这样修改不但麻烦,而且一旦WP更新,统统失效,所以张戈整理成一个php补丁,分享给大家,只要集成到主题中就可以解决这些问题了!

具体代码如下:

将下载的文件解压,并查看代码倒数第5行中的表情路径和你主题所用表情是否对应,若不对应请自行根据实际情况修改 /images/smilies 指向你的表情文件夹即可(若没有表情文件,请从本文下载并上传到主题目录亦可)。

 

然后上传到主题目录,修改主题目录下的 functions.php,在最后一个?>之前新增如下调用代码即可:

保存后,去前台刷新应该就一切正常了。

四、惯例总结

本次 WordPress 升级感觉改动还是挺大的,所以肯定也存在不少BUG,尤其是在格格不入的天朝环境下更是容易出现一些卡出翔的问题。不过 WordPress 在天朝的使用率如此之高,相信官方很快就会更新下一个版本,来修复诸如此类的问题。

张戈也算是一个狂热的 WordPress 折腾爱好者,所以在官方修复之前先将自己的折腾成功分享出来,让更新出现问题的站长提前解决这些烦人的问题。

好了,就说这么多了,如果你更新后没有这些问题,就当本文分享的是一个解决 WordPress 网站故障的一个思路吧!

 

针对wordpress的二次开发(转载)

1. 搭建环境 mac + nginx + mysql + wordpress http://segmentfault.com/a/1190000002556269 http://blog.csdn.net/dracotianlong/article/details/218170...

阅读全文

wordpress时间函数the_time()

一直以来,我对时间显示这一块都没有给予些微的关注,但昨天无意间在网络上看到了上面有一篇文章所说的就是the_time()时间函数,感觉很有必要整理一下,便将...

阅读全文

GRAVATAR 头像被墙及解决方案

打开链接:https://wordpress.org/plugins/google-fonts-acceleration/,或直接下载:google-fonts-acceleration 1 2 3

阅读全文

欢迎留言