Formularele de comentarii în WP pot fi îmbogăţite


Dacă folosiţi WordPress ştiţi bine că formularul de comentarii nu e flexibil: el conţine numele, emailul şi adresa sitului/blogului celui care comentează. Cât mi-aş fi dorit să fi citit articolul Adding Input Fields To Comment Form apărut (abia) ieri… acum mai bine de un an de zile! La un sit am vrut să am nume, email şi localitate. Drept urmare am simulat câmpul localitate folosind câmpul pentru url. De mers merge, dar cu cântec, pentru că WP automat elimină spaţiile în câmp (în url-uri nu pot fi spaţii), aşa că Târgu Mureş devine TârguMureş, şi alte exemple.

Tot ce trebuie ca WordPress-ul să includă alte câmpuri este să folosim un cod ca mai jos (evident, preluat din articolul indicat – ca precizare, nu înţeleg rostul liniei 3, o atribuire neutilizată ulterior).

add_filter('comment_form_defaults', 'schimbare_formular_comentarii');
function schimbare_formular_comentarii($default){
    $commenter = wp_get_current_commenter();
    $default['fields']['email'] .= '<p class="comment-form-author">' .
        '<label for="oras">Oraş</label>
        <span class="required">*</span>
        <input id="oras" name="oras" size="30" type="text" /></p>';
    return $default;
}

Pentru ca noul câmp introdus să fie folosit când se salvează comentariile mai adăugăm următoarele linii de cod:

add_action('comment_post', 'salvare_meta_data_comentariu');
function salvare_meta_data_comentariu($comment_id){
    add_comment_meta($comment_id, 'oras', $_POST['oras']);
}

Şi aici în principiu am terminat. Dacă vrem cumva să facem noul câmp obligatoriu (observaţi mai sus că după etichetă e pus *, mai trebuie câteva linii:

add_filter('preprocess_comment', 'verificare_meta_data_comentariu');
function verificare_meta_data_comentariu($commentdata){
    if(!isset( $_POST['oras']))
        wp_die(__( 'Eroare: completaţi câmpul cerut (oraşul).'));
    return $commentdata;
}

Ce simplu… Citiţi articolul de pe WPEngineer.com pentru alte subtilităţi legate de cele descrise mai sus.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (Neevaluat încă)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *