4

博客升级后的维护日志[2021-02-04]

 3 years ago
source link: https://yanbin.blog/blog-upgrade-maintenance-logs/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

博客升级后的维护日志[2021-02-04]

2021-02-04 — Yanbin

自去年 10 月底搬家后就基本没再写日志了,其间常登陆后台看到 WordPress 及其插件不停的有提示升级,每次都是能升就就升,至少前台的页面显示没多大问题。只有过一个小问题,左边最新评论的 Widget 显示不出东西来,把最后更新日期为 8 年前的 WP-RecentComments 插件变成了 Decent Comments 后解决。

昨天才开始琢磨着写一篇关于 Mockito Mock 静态方法的日志,才意识到一直以来不知拒绝的跟风似的升级 WordPress 主体和插件给后台带来了不得不面对的问题。

首先,传文件总是失败,在 Media 或 Add Media 时也无法浏览图片,翻看 Apache2 的错误日志也没找到问题。无奈,手工通过 SCP 上传吧,一登陆到服务器上却发现即使界面提示失败,但文件实际上是在已上传到了服务器上了的。先这么着吧,切换编辑器到文本模式手工写 <img> 标签来引用图片。

再需往日志中粘贴代码,原来那个 TinyMCE 编辑器工具栏上由某个插件放上去的添加代码的按钮也不见了,又不得不来到文本模式下写 <pre class="lang: java decode:true"></pre> 来粘贴代码。

昨天都不知道到底什么原因造成的,一则时间长了,对 WordPress 有些生疏,只注意到 Jetpack 断开连接后就再也无法设置成功,说是 /xmlrpc.php 返回的结果有问题,除了 XML-RPC server accepts POST request only. 外,在前端还有一堆的

if ( ! navigator.userAgent.match( /wp-(iphone|android|blackberry|nokia|windowsphone)/i ) ) {
    if ( ( navigator.userAgent.match( /iphone/i ) ) || ( navigator.userAgent.match( /ipod/i ) ) )
 ......

一定时插件兼容性的问题,不管它了,先把日志写完,有空再去找原因。

要找到是一款插件的问题必须逐个去排查,可以一个一个的禁插件,或全禁了再一个一个的启用插件来重现问题。不想去动主站,于是复制整站建立一个站点来寻根问底。

全问插件禁用后,上传文件和管理 Media 是没问题的,直到同时启用了 Jetpack by WordPress.comJetpack's Mobile Theme 后上传和浏览文件又不行了。Jetpack's Mobile Theme 是从先前的 Jetpack by WordPress.com 插件中分离出来的,Jetpack by WordPress.com 已移除了把非响应式的主题转换为适配移动终端,它考虑到当前的主题基本是响应式的,可惜我所用的主题比较古老,也是年久失修。

解决办法可以禁用其中任意一个,可仍然对 Jetpack by WordPress.com 爱不释手,只能忍痛割断对移动终端的支持了,渴望将来有空重选另一款支持响应式的网站主题了,技术型的网站想来用电脑的浏览的偏多。

注:xmlrpc.php 的检测,GET 访问 /xmlrpc.php 只允许看到一行, 并且最后面不能有换行符

curl https://yanbin.blog/xmlrpc.php
XML-RPC server accepts POST requests only.

还能用 POST 来测试一下 /xmlrpc.php,看如下正常的请求与结果

curl -A 'Jetpack by WordPress.com' -d '<methodCall><methodName>demo.sayHello</methodName></methodCall>' https://yanbin.blog/xmlrpc.php
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
    <params>
    <param>
    <value>
        <string>Hello!</string>
    </value>
    </param>
    </params>
</methodResponse>

再者,作为一个编程网站不能方便的插入代码也是无法接受的,可突然间忘记了是哪个插件往 Classic Editor 上添加到 代码 工具按钮,因为之前自己写过代码自定过编辑器的按钮。不过隐约中感觉到 Crayon Syntax Highlighter 可能又出兼容性的问题了,曾经升级 PHP 版本到 7 后对它动过一次手术,查看一下插件 Crayon Syntax Highliter 的最新更新也是在 5 年以前,到了该放弃的时候了。

还好找到一个它的完美替代品 Urvanov Syntax Highlighter, 而且它们底层的语法高亮是一样的实现,简单是无缝切换。还注意到 Urvanov Syntax Highlighter 的其中一个作者就是写 Crayon Syntax Highliter 的,所以不再维护后者是有理由的。

继续深究 Urvanov Syntax Highlighter 的设置界面,连标题都还是 Crayon Syntax Highlighter Settings。在这个页面中,Tag Editor 启用

[✓] Display the Tag Editor in any TinyMCE instances on the frontend (e.g. bbPress)

后,编辑器又有了插件代码的按钮

tinymce-code-button.png?resize=352%2C90&ssl=1
最后那个按钮,点击它便弹出窗口,就可轻松插入代码,选择语法等众多的选项。

整顿完最重大的两个问题 上传/浏览文件 和 插入/编辑代码 后,又可以快乐的写日志了,至后寻找一个响应式,符合自己口味的主题,那是后话。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK