Как остановить процесс отправки комментария, если поле пустое?
У меня есть форма комментариев, и в этой форме комментариев я добавил дополнительное поле ввода с именем "review_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_title" пустым, он все равно опубликует комментарий только без этого поля.
Итак, мой вопрос в том, как остановить отправку комментария, если поле "review_title" пустое?
1 answers
Если вы используете wp-comments-post.php
, было бы лучше настроить форму комментария с помощью крючка 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, сообщения об ошибках могут обрабатываться огнем pre_comment_on_post
, check_comment_flood
, или pre_comment_approved
.