web-dev-qa-db-fra.com

WP formulaire de commentaires (personnalisé) affiche un champ de commentaire supplémentaire

Je construis un thème WordPress personnalisé et j'essaye de modifier le formulaire de commentaires. Si vous allez sur la page de mon blog et faites défiler jusqu'à la section des commentaires (en bas de chaque entrée), vous remarquerez que la section des commentaires comporte deux champs textarea. Je ne veux pas le premier, mais je ne sais pas pourquoi ni comment il est inséré ici. J'aimerais que l'ordre du formulaire soit simplement: nom, email, commentaire. Le code de la zone de texte supplémentaire ne figure pas dans le code que j'ai écrit pour le formulaire de commentaire personnalisé dans functions.php:

function alpha_comments_defaults($defaults){
    $defaults['id_form'] = '';
    $defaults['id_submit'] = '';

    return $defaults;
}

function alpha_comments_fields(){
    $commenter= wp_get_current_commenter();
    $req = get_option('require_name_email');
    $aria_req = ($req ? " aria-required='true'" : ' ');

    $fields =  array(

        'author' =>
            '<p class="comment-form-author"><label>' . __( 'Name', 'domainreference' ) . ( $req ? '<span class="required">*</span>' : '' ) . '</label> ' .
            '<input name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30" ' . $aria_req . ' /></p>',

        'email' =>
            '<p class="comment-form-email"><label>' . __( 'Email', 'domainreference' ) .  ( $req ? '<span class="required">*</span>' : '' ) . '</label> ' .
            '<input name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30" ' . $aria_req . ' /></p>',

        'url' =>
            '',

        'comment_field' =>
            '<p class="comment-form-comment"><label>' . _x( 'Comment', 'noun' ) . '</label>' .
            '<textarea name="comment" cols="45" rows="8" ' . $aria_req . '></textarea></p>'
    );

    return $fields;
}

add_filter('comment_form_defaults', 'alpha_comments_defaults');
add_filter('comment_form_default_fields', 'alpha_comments_fields');

Comment puis-je me débarrasser du champ de formulaire supplémentaire?

2
Digital Brent

Il semble que WordPress traite le champ de commentaire séparément des autres champs. Si vous regardez comment_form() dans wp-includes/comment-template.php, vous pouvez le voir.

Il est possible de définir $defaults['comment_field'] sur false dans alpha_comments_defaults(), puis d'ajouter le balisage du champ de commentaire à $fields['comment_field'] dans alpha_comments_fields() dans l'ordre souhaité, mais cela pourrait entraîner des problèmes avec les plugins.

J'ai déplacé des choses et ajouté du code pour gérer l'ordre des champs que vous avez demandé.

function alpha_comments_defaults( $defaults ) {
    $defaults['id_form'] = '';
    $defaults['id_submit'] = '';
    $defaults['comment_field'] = '<p class="comment-form-comment"><label>' . _x( 'Comment', 'noun' ) . '</label>' .
                                                                '<textarea name="comment" cols="45" rows="8" aria-required="true"></textarea></p>';
    return $defaults;
}
add_filter('comment_form_defaults', 'alpha_comments_defaults');


function alpha_comments_fields( $fields ) {
    $commenter= wp_get_current_commenter();
    $req = get_option( 'require_name_email' );
    $aria_req = ( $req ? " aria-required='true'" : ' ' );

    $fields = array(
                        'author' =>
                                '<p class="comment-form-author"><label>' . __( 'Name', 'domainreference' ) . ( $req ? '<span class="required">*</span>' : '' ) . '</label> ' .
                                '<input name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30" ' . $aria_req . ' /></p>',

                        'email' =>
                                '<p class="comment-form-email"><label>' . __( 'Email', 'domainreference' ) .  ( $req ? '<span class="required">*</span>' : '' ) . '</label> ' .
                                '<input name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30" ' . $aria_req . ' /></p>',

                        'url' => '',
    );

    return $fields;
}
add_filter('comment_form_default_fields', 'alpha_comments_fields');


// Reorder comment fields.
// http://wordpress.stackexchange.com/a/218324/2807
function alpha_move_comment_field( $fields ) {
    $comment_field = $fields['comment'];
    unset( $fields['comment'] );
    $fields['comment'] = $comment_field;

    return $fields;
}
add_filter( 'comment_form_fields', 'alpha_move_comment_field' );
3
Dave Romsey