1

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

  1. 评论保存
  2. 访问者返回到包含表单的页面,其字段预先填充了提交的值
  3. 评论表单已更改,并添加了带有 CAPTCHA 的额外表单元素。

我试图做这样的事情:

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、会话等即可做到这一点。

4

0 回答 0