从Wordpress中的preprocess_comment钩子更改注释表单字段?

时间:2012-12-27 21:19:14

标签: php forms wordpress validation

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

  1. 评论已保存
  2. 访问者返回包含表单的页面,其字段预先填充了提交的值
  3. 注释表单已更改,并且添加了带有CAPTCHA的额外表单元素。
  4. 我试图做这样的事情:

    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(),因此您无法使用用户提交的值返回预填充的评论表单。

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

    我想知道是否有办法在Wordpress中挂钩评论系统,并且无需借助javascript,会话等等就可以做到这一点。

0 个答案:

没有答案