Php 从Wordpress中的预处理注释钩子更改注释表单字段?

Php 从Wordpress中的预处理注释钩子更改注释表单字段?,php,forms,wordpress,validation,Php,Forms,Wordpress,Validation,上下文:当访问者在Wordpress中提交评论表单时,我想验证preprocess_comment中的数据。如果不满足某些参数,我希望发生三件事: 注释不会被保存 访问者返回到包含表单的页面,其字段将预先填充提交的值 注释表单被修改,并添加了一个带有验证码的额外表单元素 我尝试过这样做: function myplugin_validate($comment) { add_action('comment_form_logged_in_after', 'comment_form_captcha

上下文:当访问者在Wordpress中提交评论表单时,我想验证preprocess_comment中的数据。如果不满足某些参数,我希望发生三件事:

  • 注释不会被保存
  • 访问者返回到包含表单的页面,其字段将预先填充提交的值
  • 注释表单被修改,并添加了一个带有验证码的额外表单元素
  • 我尝试过这样做:

    function myplugin_validate($comment) {
      add_action('comment_form_logged_in_after', 'comment_form_captcha_field');
      return $comment;
    }
    add_action('preprocess_comment', 'myplugin_validate');
    
    function comment_form_captcha_field() {
      echo "....";
    }
    
    但是,这种方法不起作用:

    无法停止preprocess_comment中的流 由于从未调用comment_form_captcha_field(),所以您不会返回带有用户提交值的预填充注释表单

    当然也有“脏”的替代方案,比如将提交的值存储在会话中,从预处理注释(wp_redirect)重定向用户,以及在重新加载页面后从会话捕获值。或者我可以通过JS拦截提交处理程序并从那里开始

    我想知道是否有一种方法可以连接到Wordpress中的评论系统,而不必求助于javascript、会话等