表单提交时update_post_meta自定义字段无法生效问题求助
排查自定义字段写入失败的思路(针对Just Custom Fields插件)
咱来捋捋碰到这类问题的排查方向,毕竟用第三方自定义字段插件时,确实容易踩这种“写post_content正常,自定义字段就不行”的坑:
先确认字段的真实键名:有时候插件创建的字段显示名是
_my_description,但内部存储时可能加了插件专属前缀(比如jcf_开头)。可以用这段代码打印目标文章的所有自定义字段,确认真实键名:$all_meta = get_post_meta($post_id, '', true); print_r($all_meta);要是键名不对,再怎么写都是白搭。
检查插件的权限/写入限制:去Just Custom Fields的字段编辑页面看看,有没有设置“禁止通过程序修改”的选项?另外,要是你是前台表单提交(游客权限),有些插件会默认限制非登录用户修改自定义字段,这时候要么给提交动作加权限,要么在插件里放开这个字段的修改权限。
换用
update_post_meta单独写入:如果你之前是用wp_update_post的meta_input参数一起写入的,试试拆分操作——先更新post_content,再单独用update_post_meta写自定义字段:// 更新post_content wp_update_post(array( 'ID' => $post_id, 'post_content' => $form_submit_data )); // 单独写入自定义字段 update_post_meta($post_id, '_my_description', $form_submit_data);很多第三方自定义字段插件会在字段保存时绑定自己的钩子(比如验证、格式化),直接用
meta_input会绕过这些钩子,导致插件不认可这次写入,看起来就像失败了。排查钩子冲突:暂时禁用其他插件、切换到WordPress默认主题(比如Twenty Twenty-Four),试试能不能正常写入。要是恢复正常了,那就是其他插件/主题的
save_post之类的钩子覆盖了你的字段值。
你提到已经修复了问题,要是后续有人需要参考你的修复代码,欢迎补充出来~
内容的提问来源于stack exchange,提问作者Chazlie
相关产品推荐
相关产品推荐

