Для моей формы комментариев Wordpress я использую «проверку браузера», добавив следующий код в мои functions.php:
/**
* Enable form validation
*/
function custom_enable_comment_form_validation() {
if ( comments_open() && current_theme_supports( 'html5' ) ) {
echo '<script>document.getElementById("commentform").removeAttribute("novalidate");</script>' . PHP_EOL;
}
}
add_action( 'wp_footer', 'custom_enable_comment_form_validation' );
Форма моего комментария состоит из поля имени и адреса электронной почты + текстового поля комментария. Все поля обязательны для заполнения. К сожалению, сообщение «обязательное поле» появляется только в поле комментария ... И когда я заполняю поле комментария и оставляю поле имени и адреса электронной почты пустым, Wordpress по-прежнему перенаправляет пользователя на страницу ошибки.
Пример формы моего комментария с сообщением «Обязательное поле», которое должно появиться, если поле пустое. К сожалению, только поле комментария показывает сообщение.
В моих полях формы комментариев также используются заполнители, и когда я удалил заполнитель полей имени и электронной почты, я обнаружил, что все поля работают правильно и отображают всплывающие сообщения. Таким образом, ошибка, скорее всего, вызвана следующим кодом:
<?php
/* Using an placeholder in the name and email field. */
function my_update_comment_fields( $fields ) {
$commenter = wp_get_current_commenter();
$req = get_option( 'require_name_email' );
$label = $req ? '*' : ' ' . __( '(optional)', 'text-domain' );
$aria_req = $req ? "aria-required='true'" : '';
$fields['author'] =
'<p class="comment-form-author">
<input id="author" name="author" type="text" placeholder="' . esc_attr__( "Your name", "text-domain" ) . '" value="' . esc_attr( $commenter['comment_author'] ) .
'" size="30" ' . $aria_req . ' />
</p>';
$fields['email'] =
'<p class="comment-form-email">
<input id="email" name="email" type="email" placeholder="' . esc_attr__( "Your email address", "text-domain" ) . '" value="' . esc_attr( $commenter['comment_author_email'] ) .
'" size="30" ' . $aria_req . ' />
</p>';
return $fields;
}
add_filter( 'comment_form_default_fields', 'my_update_comment_fields' );
?>
К сожалению, я не могу выяснить, в чем дело ... может кто-нибудь решить проблему?
Может кто-нибудь также сказать мне, как изменить текст всплывающего сообщения на сообщение по умолчанию в functions.php?
Заранее спасибо.