在区块编辑器侧栏加了个 reading_time 字段,点更新转两秒,弹出「更新失败」,控制台里 REST 返回 rest_invalid_param。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
register_post_meta('post', 'reading_time', array(
'type' => 'integer',
'single' => true,
'show_in_rest' => true,
));
区块编辑器走 REST 保存,没注册过的 meta 会被直接丢掉,类型不符还会让整个请求报错。下划线开头的键默认受保护,也不会出现在接口里。这一点先确认清楚,后面就不用反复试。
「register_post_meta 保存失败」这类改动最怕改一半,回滚脚本先准备好,再动生产。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。
改完隔一天再看一次,当场正常不代表能稳住。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
具体做法是,用 register_post_meta 注册字段,type 和 single 要和实际值一致;需要走接口就打开 show_in_rest,并写好 auth_callback;先用命令行写一条再读出来,确认注册生效再回编辑器操作。
改完照着核一遍,侧栏改完数值点更新不再报错,数据库里 meta_value 是刚填的数字。
