如果字段为空,如何停止提交评论的过程?

时间:2016-03-06 作者:Noob17

我有一个评论表单,在该评论表单中,我添加了一个名为“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”字段为空,如何停止提交评论?

1 个回复
最合适的回答,由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.