支持

账户

主页 论坛 错误报告 前端表单问题:pre_save_post和save_post

解决了的

前端表单问题:pre_save_post和save_post

  • 我有两个函数来处理前端表单。在v4.2.0之前,这些函数用于按预期正确处理我的表单。

    pre_save函数:

    /***ACF预存帖子**@return int$post_id新帖子的id;*/函数my_acf_pre_save_post($post_id){如果($postid!='new')返回$postiid;$post_data=数组('post_title'=>'草稿帖子',“post_status”=>“草稿”,“post_author”=>获取当前用户id());$post_id=wp_insert_post($post_data);返回$post_id;}add_filter('acf/pre_save_post','my_acf_pre_savd_post],10,2);

    …以及save_post函数:

    /***将过帐数据添加到ACF表单过帐**@返回void*/函数my_acf_save_post($post_id){//不要在ACF帖子类型上执行此操作if(get_post_type($postid)==“acf”)返回;//获取字段$fields=获取字段对象($post_id);//获取隐藏字段中的帖子类型默认值$cpt=$字段[“form_field_key_post_type”][“值”];//防止无限循环。。。删除操作('acf/save_post','my_acf_save_phost');//从表单中获取过帐数据$post=数组('ID'=>$post_ID,“post_type”=>$cpt“post_title”=>$字段['form_field_key_post_title']['value'],“post_content”=>$字段['form_field_key_post_content']['value'],“post_status”=>$字段['form_field_key_post_status']['value']);//更新帖子wp_update_post($post);//继续保存操作add_action('acf/save_post','my_save_phost');//设置“新”帖子的返回URL$_POST['return']=add_query_arg(“已更新”,“真”,get_permalink($POST_id));}add_action('acf/save_post','my_acf_save_post',10,1);

    将这些调试语句添加到前保存后产生了意想不到的结果,考虑到acf格式头$帖子id价值$_POST['POST_id'].

    参见第1012行

    /***ACF预存帖子**@return int$post_id新帖子的id;*/函数my_acf_pre_save_post($post_id){var_dump($post_id);//输出:空var_dump($_POST[“POST_id”]);//输出:字符串(3)“新”死亡();如果($postid!='new')返回$postiid;$post_data=数组(“post_title”=>“草稿列表”,“post_status”=>“草稿”,“post_author”=>获取当前用户id());$post_id=wp_insert_post($post_data);返回$post_id;}添加过滤器('acf/pre_save_post','mri_jb_acf_pre_save_post');
  • 您好!@Statemz公司

    我不能100%确定为什么$post_id为空,您能拿出您的自定义acf/save_post过滤器吗。

    pre_save_post过滤器现在是否正常工作?

  • 此外,您可以编辑代码文件并在那里调试$post_id参数吗?

  • 这很奇怪吧?我对这件事感到非常奇怪…

    好的,save_post操作被注释掉了,下面的调试语句被添加到acf格式头(结果如下);

    函数acf_form_head(){//全局变量全局$post_id;//验证nonceif(isset($_POST['acf_nonce'])&&wp_verify_nonce($_POST['acf _nonce'],'input')){var_dump($post_id);//输出:NULL//要保存的$post_id$post_id=$_post[“post_id”];var_dump($post_id);//输出:字符串(3)“新”//允许自定义保存$post_id=应用过滤器('acf/pre_save_post',$post_id);var_dump($post_id);//输出:空死亡();//保存数据do_action('acf/save_post',$post_id);// ...}// ...}
  • 我对代码的研究还不够深入,无法了解您如何使用新的保存post_lock&保存_发布_解锁功能,但在你的脑海中,这可能对这种情况有任何影响吗?

  • 啊哈!我评论了你的保存post_lock保存_发布_解锁过滤器,一切都很好。

    向这些函数添加空白返回语句也无法解决此问题…

    但是,添加返回$post_id;这些功能确实解决了这个问题。

    过滤器回调中没有返回语句会使过滤变量处于未定义状态。

    想法?

  • 函数save_post_lock($post_id){$GLOBALS['acf_save_lock']=$post_id;返回$post_id;}
    函数save_post_unlock($post_id){$GLOBALS['acf_save_lock']=假;返回$post_id;}
  • 我也有同样的问题。几天前我创建了一个前端表单,它运行良好。然后我的客户更新到最新版本的ACF,突然表单不再保存数据。它没有给出任何错误消息,只是实际上没有创建新项。

    前端表单如下:
    http://cookingcontestcentral.com/submit-a-crecipe/

    让我知道如何帮助排除故障?

  • 像我一样编辑上面的两个函数,一切都应该正常。

    WP过滤器需要返回语句(除非需要NULL值)。

    希望我们很快就会有更新,但与此同时,您必须熟悉插件本身的编辑。

    已经提交了拉请求(希望我没有遗漏任何内容):

    https://github.com/elliotcondon/acf/pull/131

  • 我在哪里可以找到这些函数?我只是浏览了一些主题文件,但没有找到它们。

    谢谢!

  • 以下是编辑后的分叉回购:
    https://github.com/tatemz/acf

    以下是更新的zip文件的链接:
    https://github.com/tatemz/acf/archive/master.zip

    对进行了更改交流功率因数

  • 万岁!只需将acf.php文件替换为master.zip中的文件,它就可以再次工作了。

    谢谢!🙂

  • 您好!@塔坦兹

    你真是个天才!谢谢,伙计。是的,锁定操作需要返回$post_id,我的错。

    这将包含在4.2.1中(应在几天后发布)

查看13篇帖子-1到13篇(共13篇)

“前端表单问题:pre_save_post&save_post”主题对新回复关闭。