it-swarm.dev

Validace formuláře komentáře

Jak mohu nastavit pravidla ověřování pro pole komentáře?

Změním hodnotu komentáře/e-mailu/domovské stránky onmouseover a onblur (používám to namísto štítků - takže pokud je pole prázdné, zobrazí se "Váš e-mail", "Vaše domovská stránka" atd.). Problém je, pokud je odeslán, odešle tento text do pole domovské stránky (protože nemá žádnou validaci na rozdíl od e-mailového pole, kde se vyskytne chyba, pokud jste zadali něco kromě něč[email protected]).

Jak mohu ověřit domovskou stránku?

3
Kilgore_Trout

Zpracování komentářů se provádí v souboru: wp-comments-post.php. Pomocí háčku pre_comment_on_post můžete ověřit hodnoty zadané do polí formuláře komentáře.

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');

pokud chcete změnit odeslanou hodnotu, použijte filtr preprocess_comment. Např.:

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');
7
sorich87