Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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 something@something.something).

How could I validate the homepage field?

share|improve this question
    
There was similar question about form validation in admin area, answer there might fit your needs: Validating Custom Meta Box Values & Required Fields –  Rarst Oct 4 '10 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"). –  Kilgore_Trout Oct 4 '10 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 Oct 4 '10 at 14:53

1 Answer 1

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');
share|improve this answer
    
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). –  Kilgore_Trout Oct 5 '10 at 9:02
    
I modified my answer. –  sorich87 Oct 5 '10 at 9:38

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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