上下文:当访问者在 Wordpress 中提交评论表单时,我想验证 preprocess_comment 中的数据。如果某些参数不满足,我想发生三件事:
- 评论未保存
- 访问者返回到包含表单的页面,其字段预先填充了提交的值
- 评论表单已更改,并添加了带有 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、会话等即可做到这一点。