多站点里子站主题注册了 400×250 的卡片图,上传后 metadata 的 sizes 里没有这一档,只有主站的 thumbnail 和 medium。切到主站上传同一张图反而有。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
add_action('after_setup_theme', function () {
add_image_size('card-400', 400, 250, true);
});
wp media regenerate --yes --url=sub.example.com
add_image_size 挂在 after_setup_theme 上执行,多站点切换站点时如果主题被提前加载,注册就落在主站上下文。上传处理按当前 blog 的尺寸表走,子站这份没被登记。这一点先确认清楚,后面就不用反复试。
「子站图片尺寸不生效」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
具体做法是,把 add_image_size 放回子站主题的 after_setup_theme 里 不要在插件初始化阶段注册;确认上传请求的 blog_id 和注册时一致;已上传的图重新生成 元数据才会补上新尺寸。
改完照着核一遍,子站新上传的图 metadata 里出现 card-400,前台卡片取到 400×250 的裁剪图。
