3

How can I set the validation rules for the comment field?

I change the value of commenter name/e-mail/homepage onmouseover and onblur (I use this instead of labels - so if the field is empty it displays "Your e-mail", "Your homepage", etc.). The problem is, on submit, it submits this text in the homepage field (since it has no validation unlike the e-mail field where you get an error if you entered anything except [email protected]).

How could I validate the homepage field?

3
  • There was similar question about form validation in admin area, answer there might fit your needs: Validating Custom Meta Box Values & Required Fields
    – Rarst
    Commented Oct 4, 2010 at 12:23
  • Thanks, but it seems that it can't change the entered value, so if somebody don't write an URL to the "homepage" field, it would simply return an error message (since "Your homepage" it is not a vaild URL). I need it submit the field as empty, so wordpress wouldn't create a nonsensical link "your°%20homepage"). Commented Oct 4, 2010 at 13:27
  • Ah, slightly misunderstood your question. This probably can be done in WordPress internally, but I don't know how - will need to look into it. As for front-end solution also check Sliding Labels, it's what I used at my blog for tidy inline labels with bit of eye-candy.
    – Rarst
    Commented Oct 4, 2010 at 14:53

1 Answer 1

9

Comments processing is done in the file: wp-comments-post.php. You can use the hook pre_comment_on_post to validate the values entered in the comment form fields.

function custom_validate_comment_url() {
    if( !empty( $_POST['url'] ) && !preg_match( '\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]', $_POST['url'] ) // do you url validation here (I am not a regex expert)
        wp_die( __('Error: please enter a valid url or leave the homepage field empty') );
}

add_action('pre_comment_on_post', 'custom_validate_comment_url');

if you want to change a submitted value, use the filter preprocess_comment. E.g.:

function custom_change_comment_url( $commentdata ) {
    if( $commentdata['comment_author_url'] == 'Your homepage' )
        $commentdata['comment_author_url'] = '';
    return $commentdata;
}

add_filter('preprocess_comment', 'custom_change_comment_url');
3
  • Thanks! So if I want to change a submitted value during validation, I have to modify that? (The main goal is that when the comment_author_url field is submitted with the "dummy" "Your homepage" value, it changes to an empty field - so no link will be displayed). Commented Oct 5, 2010 at 9:02
  • I modified my answer.
    – sorich87
    Commented Oct 5, 2010 at 9:38
  • how to show error on same page below comment form
    – inrsaurabh
    Commented Jul 4, 2018 at 6:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.