添加ACF新字段时触发现有wp_insert_post_data自定义函数报错问题
问题原因与修复方案
核心错误点
- 数量限制逻辑未限定作用范围:你写的用户最多创建4篇note的判断条件,没有先校验当前正在插入的文章类型是不是
note,ACF创建字段时本质是插入ACF专属的自定义文章类型记录,只要你的账号note数量已经到了上限,这个全局生效的wp_insert_post_data钩子就会直接拦截终止流程,触发报错。 - 运算符书写错误:第三个条件判断中误用赋值运算符
=替代了比较运算符==,会强制把所有非回收站的文章类型修改为note,进一步放大逻辑错误。
修复后代码
add_filter('wp_insert_post_data', 'makeNotePrivate', 10, 2); function makeNotePrivate($data, $postarr) { // 新增判断:仅在操作note类型文章时才触发数量限制 if($data['post_type'] == 'note' && (count_user_posts(get_current_user_id(), 'note') > 4) && !$postarr['ID']) { die("You have reached your limit "); } if($data['post_type'] == 'note') { $data['post_title'] = sanitize_text_field($data['post_title']); $data['post_content'] = sanitize_textarea_field($data['post_content']); } // 修复运算符错误,把=改成== if($data['post_type'] == 'note' && $data['post_status']!='trash') { $data['post_status'] = "private"; } return $data; }
内容的提问来源于stack exchange,提问作者Julie
相关产品推荐
相关产品推荐

