Puock 主题文章列表缩略图无法显示,报错
A TimThumb error has occured。
「一、排查过程」
- 认识机制:缩略图由
pk_get_img_thumbnail_src()生成,走timthumb.php实时抓图裁剪,而不是 WordPress 原生裁剪 core.php:367-377。 - 排除干扰项:伪静态未开启、白名单文件
.tas.php位于主题目录(非网站根目录)、旧 COS 桶域名已通过重新保存后台设置刷新 core.php:852-888。 - 定位真因:用
curl -v复现出403 Forbidden(来自腾讯云 EdgeOne)。原因是timthumb.php服务端抓图时不带 Referer timthumb.php:1298-1310,而 EdgeOne 防盗链规则拦截了”无 Referer”请求——这也是为什么浏览器直接访问的图片正常,唯独经过 timthumb 中转的缩略图被拦。 - 额外发现:同域名图片会被
timthumb.php误判为本地文件 timthumb.php:228-234,走另一条完全独立的失败路径(本地路径找不到文件)。
![[网站修复]:Puock 主题 缩略图修改原图方案 [网站修复]:Puock 主题 缩略图修改原图方案](https://static.lifetruth.top/wp-content/uploads/2026/09/20260905190514727.png)
「二、结论与方案」
timthumb.php 链路牵扯 Nginx、PHP、COS、EdgeOne 多层系统,故障点太多。最终选择跳过 timthumb,直出原图:把 pk_get_img_thumbnail_src() 改为直接 return $src;,配合主题已有的 .thumbnail 容器(固定宽高 + overflow:hidden)+ CSS object-fit: cover 模拟裁剪效果 style.less:848-880。
「三、遗留风险」
该函数属于主题核心文件,主题自带自动更新会整包覆盖 functions.php:613-653,且无 function_exists() 保护无法用子主题覆盖,每次升级需手动重新打补丁。
正文完