Проверка браузера формы комментария - PullRequest
0 голосов
/ 29 апреля 2018

Для моей формы комментариев 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?

Заранее спасибо.

...