我有一个评论表单,在该评论表单中,我添加了一个名为“review\\u title”的额外输入字段。当一个人提交评论表单时,它会被很好地插入,并且额外的字段会被插入到评论元中。我想要实现的是在提交评论时进行服务器端检查,检查额外字段是否为空,以及额外字段是否为空,然后停止脚本发布评论。以下是我的尝试:
以下是表格:
<form action="http://localhost/test/wp-comments-post.php" method="post" id="commentform" class="comment-form">
<p class="comment-form-title">
<label for="pmg_comment_title">Review Title</label>
<input type="text" name="review_title" id="pmg_comment_title" />
</p>
<p class="comment-form-comment">
<label for="comment">Comment</label>
<textarea id="comment" name="comment" required="required"></textarea>
</p>
<input name="submit" type="submit" id="submit" value="Post Comment" />
</form>
这是我尝试使用的函数:
function verify_comment_meta_data( $commentdata ) {
if (!isset($_POST[\'review_title\']))
wp_die( __( \'Error: please fill the required field (city).\' ) );
return $commentdata;
}
add_filter( \'preprocess_comment\', \'verify_comment_meta_data\' );
不幸的是,这根本没有任何作用,如果我将“review\\u title”字段留空,它仍然会在没有该字段的情况下发布评论。
因此,我的问题是,如果“review\\u title”字段为空,如何停止提交评论?
最合适的回答,由SO网友:Jevuska 整理而成
如果您使用wp-comments-post.php
最好是定制comment_form 通过挂钩comment_form_default_fields
, 我不知道你为什么要创建新的。但是根据你的功能你可以这样处理
add_filter( \'preprocess_comment\', \'verify_comment_meta_data\', 1, 1 );
function verify_comment_meta_data( $commentdata )
{
$commentdata[\'review_title\'] = ( ! empty ( $_POST[\'review_title\'] ) ) ? sanitize_text_field( $_POST[\'review_title\'] ) : false;
if ( ! $commentdata[\'review_title\'] )
wp_die( __( \'<strong>ERROR</strong>: please fill the required fields ( city ).\', \'textdomain\' ) );
return $commentdata;
}
实际上,作为WordPress注释工作流,错误消息可以由fire处理
pre_comment_on_post
,
check_comment_flood
, 或
pre_comment_approved
.