// 检查实际命中的文件
echo locate_template('template-parts/card.php');
// 参数与文件名必须完全一致(含大小写)

本地 Windows 上卡片正常显示,传到 Linux 服务器后列表位置整块空白,日志里没有任何报错,页面状态码还是 200。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:get_template_part 拼的路径是 template-parts/Card,磁盘上的文件叫 card.php,Windows 不区分大小写能读到,Linux 区分大小写就找不到。找不到时函数直接返回,不抛错也不写日志。

围绕「模板文件大小写」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

处理上按这个顺序:把模板目录里的实际文件名列出来,和代码里的拼写逐个对照;统一改成全小写加连字符,代码和文件名同时改;本地开发也按大小写敏感的方式校验,别等上线才发现。

确认没问题再收工,Linux 服务器上列表卡片正常输出,页面不再出现整块空白。

作者 9823189