Typecho 1.3.0 升级注意:附件上传插件兼容修改说明

2026-03-04/码农修仙/共1409字/暂无评论

不少朋友升级到 Typecho 1.3.0 之后,

可能会遇到一个不太显眼、但挺影响使用的问题:

编辑带有附件的文章时,页面会出现 500 错误,

而且因为附件面板是独立切换的,排查起来也不太直观。

其实不是插件坏了,也不是程序出了故障,

只是官方在底层做了一处小调整,对附件相关的插件来说,就需要顺手做一下兼容。

一、改动点在哪?其实就一处

问题出在文件:var/Widget/Upload.php 第 50 行的 attachmentHandle 方法。

旧版本(1.2.x 及以前)参数是数组,写法是这样:

public static function attachmentHandle(array $content): string

1.3.0 新版本,参数类型换成了 Typecho\Config 对象:

public static function attachmentHandle(Config $attachment): string

就这一行的变化,导致原来按数组写的插件,直接对不上类型,程序一跑就报错。

二、官方为什么这么改?

并不是随便调整,而是框架本身的优化:

使用 Config 统一管理配置,结构更规范

避免数组键名混乱,方便后续扩展

整体代码更严谨,减少误调用

对系统本身是好事,只是对已有的附件上传类插件,会带来兼容性问题。

三、插件兼容方案:加一段判断就行

不用重写插件,也不用降级版本,只需要在插件的 attachmentHandle 方法里,做一次参数兼容处理。

原来的写法(会报错)

public static function attachmentHandle(array $content): string

兼容 1.3.0 的写法,把参数类型去掉或改为 mixed,然后在方法开头统一处理:

public static function attachmentHandle($content): string
{
    // 兼容新旧版本参数
    if ($content instanceof \Typecho\Config) {
        $content = $content->toArray();
    } else {
        $content = $content['attachment'] ?? [];
    }

    // 下面原有逻辑保持不变
}

改完这一小段,老插件就能正常在 1.3.0 里使用,文章编辑页的 500 错误也会消失。

四、简单总结一下

Typecho 1.3.0 在附件处理上,把参数从数组换成了 Config 对象:

系统更规范、更稳定

旧附件插件会因类型不匹配报错

只需在插件内做一次类型判断和转换,即可完美兼容

升级本身是好事,只是需要我们顺手给插件做个小适配。

如果你用了自定义上传、图片处理类插件,升级前可以先检查这一处,能省去不少麻烦。

正文完

AI课代表总结

这篇日志太及时了!我正头疼 Typecho 1.3.0 升级后附件上传的问题,原来是这里改了。感谢博主这么细致地分析了原因和解决方案,特别是那个兼容代码,简直是救星!看来升级前检查一下插件兼容性是个好习惯,以后我也会多注意的。这下可以安心升级了,太赞了!

暂无评论