web-dev-qa-db-de.com

WP Das Kommentarformular (benutzerdefiniert) zeigt ein zusätzliches Kommentarfeld an

Ich erstelle ein benutzerdefiniertes WordPress-Design und versuche, das Kommentarformular zu optimieren. Wenn Sie zu Meine Blog-Seite gehen und zum Kommentarbereich (unter jedem Eintrag) scrollen, werden Sie feststellen, dass der Kommentarbereich zwei textarea Felder enthält. Ich möchte nicht das erste, aber ich bin nicht sicher, warum oder wie es dort eingefügt wird. Ich möchte, dass die Reihenfolge des Formulars wie folgt aussieht: Name, E-Mail, Kommentar. Der Code für den zusätzlichen Textbereich ist nicht in dem Code enthalten, den ich für das benutzerdefinierte Kommentarformular in functions.php geschrieben habe:

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

Wie entferne ich das zusätzliche Formularfeld?

2
Digital Brent

Es scheint, dass WordPress das Kommentarfeld separat als die anderen Felder behandelt. Wenn Sie sich comment_form() in wp-includes/comment-template.php ansehen, können Sie dies sehen.

Es ist möglich, $defaults['comment_field'] in alpha_comments_defaults() auf false zu setzen und dann das Kommentarfeld-Markup in der gewünschten Reihenfolge zu $fields['comment_field'] in alpha_comments_fields() hinzuzufügen. Dies kann jedoch zu Problemen mit Plugins führen.

Ich habe Dinge verschoben und Code hinzugefügt, um die von Ihnen angeforderte Feldreihenfolge zu verarbeiten.

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