Валидация формы комментария

4 окт. 2010 г., 14:50:40
Просмотры: 15.7K
Голосов: 4

Как я могу установить правила валидации для поля комментария?

Я изменяю значение полей имени/email/домашней страницы комментатора при событиях onmouseover и onblur (я использую это вместо подсказок - так если поле пустое, оно показывает "Ваш email", "Ваша домашняя страница" и т.д.). Проблема в том, что при отправке формы, этот текст отправляется в поле домашней страницы (поскольку оно не имеет валидации, в отличие от поля email, где вы получаете ошибку, если ввели что-то кроме something@something.something).

Как я могу сделать валидацию поля домашней страницы?

3
Комментарии

Был похожий вопрос о валидации форм в админке, ответ на него может подойти вам: Проверка значений пользовательских метабоксов и обязательных полей

Rarst Rarst
4 окт. 2010 г. 15:23:32

Спасибо, но похоже, что это не может изменить введённое значение. Так что если кто-то не напишет URL в поле "домашняя страница", просто вернётся сообщение об ошибке (поскольку "Ваша домашняя страница" — это не валидный URL). Мне нужно, чтобы поле отправлялось пустым, и WordPress не создавал бессмысленную ссылку "http://your°%20homepage").

Kilgore_Trout Kilgore_Trout
4 окт. 2010 г. 16:27:06

А, немного неверно понял ваш вопрос. Наверное, это можно сделать внутри WordPress, но я не знаю как — нужно разбираться. Что касается фронтенд-решения, посмотрите также Скользящие подписи, это то, что я использовал в своём блоге для аккуратных встроенных подписей с небольшой визуальной привлекательностью.

Rarst Rarst
4 окт. 2010 г. 17:53:47
Все ответы на вопрос 1
3

Обработка комментариев происходит в файле: wp-comments-post.php. Вы можете использовать хук pre_comment_on_post для проверки значений, введенных в полях формы комментария.

function custom_validate_comment_url() {
    if( !empty( $_POST['url'] ) && !preg_match( '\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]', $_POST['url'] ) // здесь выполняется проверка URL (я не эксперт по регулярным выражениям)
        wp_die( __('Ошибка: пожалуйста, введите корректный URL или оставьте поле домашней страницы пустым') );
}

add_action('pre_comment_on_post', 'custom_validate_comment_url');

Если вы хотите изменить отправленное значение, используйте фильтр preprocess_comment. Например:

function custom_change_comment_url( $commentdata ) {
    if( $commentdata['comment_author_url'] == 'Ваша домашняя страница' )
        $commentdata['comment_author_url'] = '';
    return $commentdata;
}

add_filter('preprocess_comment', 'custom_change_comment_url');
4 окт. 2010 г. 22:33:22
Комментарии

Спасибо! Значит, если я хочу изменить отправленное значение во время валидации, мне нужно его модифицировать? (Основная цель в том, чтобы когда поле comment_author_url отправляется со значением "dummy" "Your homepage", оно менялось на пустое поле - чтобы ссылка не отображалась).

Kilgore_Trout Kilgore_Trout
5 окт. 2010 г. 12:02:13

Я изменил свой ответ.

sorich87 sorich87
5 окт. 2010 г. 12:38:24

как показать ошибку на той же странице под формой комментария

inrsaurabh inrsaurabh
4 июл. 2018 г. 09:01:18