先给结论:不要急着改数据库表结构,而是先把“字段不够用”拆成三种不同情况——展示层缺字段、存储层缺字段、关系层缺字段。多数上线后才发现的问题,其实属于前两种,用自定义字段或自定义分类就能解决;只有当你需要按新字段做高频筛选、排序或跨表关联时,才值得动存储层。判断依据是:这个新字段会不会出现在查询条件里,以及它和已有内容的对应关系是一对一还是一对多。
拿你手里正在维护的一个页面或一篇文章作为样本,问自己三个问题。第一,这个新信息是否只用于展示,比如一段补充说明、一个外部编号?第二,它是否需要被用来筛选或排序,比如“按适用场景列出所有条目”?第三,同一条内容是否会对应多个值,比如一篇文章关联多位作者或多个地区?
如果答案只落在第一个问题,用自定义字段(post meta)就够了,改动成本最低,也不影响已有数据。如果落在第二个问题,自定义字段仍可存储,但查询性能会随数据量增长而下降,这时要考虑把它做成自定义分类法(taxonomy),因为分类法天生带索引和归档页。如果落在第三个问题,说明你需要的是关系结构,而不是往单条记录上继续加字段。
这里有一个容易忽略的边界:个别样本成立,不代表规模化后仍成立。你手动给十篇文章补一个字段,感觉毫无压力;但当成千上万条内容都需要按这个字段筛选时,用元数据查询会明显变慢。所以决策的分界线不是“现在能不能存下”,而是“未来会不会用它来查”。
自定义字段适合“只读展示”和“低频查询”的场景。具体动作是:先在一条内容上注册字段并填入测试值,再在模板里输出它,确认前台显示正确。这一步的结果会直接决定下一步——如果显示正常且不需要筛选,就可以批量补齐;如果发现同一字段在不同内容上含义不一致,说明字段定义本身没想清楚,应该先统一语义再继续。
需要提醒的是,自定义字段的键名一旦投入使用,后期改名会牵连所有已存数据。所以命名时用能表达含义的英文短语,并保持全站一致,比事后迁移省事得多。另外,字段值不要混用类型,同一个键一会儿存数字、一会儿存文本,会让后续查询和排序出现难以排查的异常。
当新字段需要出现在筛选、归档或站点导航中时,自定义分类法通常比自定义字段更合适。它的优势在于自带查询索引和归档结构,不需要你手写复杂的查询逻辑。判断是否值得升级,可以看一个假设例子:假设你有约两千条内容,需要按“适用行业”筛选,用元数据查询每次都要扫描大量记录,而分类法可以直接命中对应项。这个对比只是说明筛选机制的区别,不代表任何具体性能数字。
动作上,先创建分类法并只给少量内容打上标签,观察前台归档页和筛选入口是否按预期工作。如果归档页结构符合需求,再批量迁移旧数据;如果发现分类之间的层级关系混乱,说明应该先梳理分类体系,而不是急着迁移。迁移完成后再回头检查原来的自定义字段,确认它是否还有保留价值,避免同一信息存两份导致更新时遗漏。
只有当你需要跨内容类型做关联查询、或者字段数量多到影响查询效率时,才考虑新增数据表或调整表结构。这类改动风险最高,因为它直接触及已有数据。稳妥的顺序是:先在测试环境复制一份数据做验证,确认新结构能承载现有内容,再安排正式迁移,并在迁移前完成一次完整备份。
这里要说明一个常见误判:迁移后如果发现某些查询变快、某些变慢,不能单独归因于新结构。缓存状态、索引是否重建、查询写法是否同步更新,都会影响结果。所以迁移后应该逐项核对关键页面,而不是只看一个指标就下结论。
按这个顺序走,你能在改动最小的情况下判断出真正需要扩展的层级,也能在规模化之前发现那些只在小样本里成立的假设。