How to change the order of elements in comment_form()

I’ve put the class for ‘logged_in_as’ into another container to display the content in another column:

    <div id="content-form">

       <?php 

         $fields =  array(

            'author' => '<div class="right_col"><p class="comment-form-author">
                            <input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
            'email'  => '<p class="comment-form-email">
                            <input id="email" name="email" type="text" value="Name' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
            'url'    => '<p class="comment-form-url">
                            <input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p></div>',
        );  

        comment_form( array(

           'label_submit' => 'Beitrag kommentieren', 
           'title_reply' => '', 
           'fields' => apply_filters( 
              'comment_form_default_fields', $fields ), 
           'comment_notes_before' => '', 
           'comment_notes_after' => '',
           'logged_in_as' => '<div class="right_col"><p class="logged-in-as">' 
                                . sprintf( 
                                      __( 'Logged in as <a href="%s">%s</a> . 
                                           <a href="%s" title="Log out of this account">Log out?</a></p></div>' 
                                      )
                                      , admin_url( 'profile.php' )
                                      , $user_identity
                                      , wp_logout_url( apply_filters( 'the_permalink'
                                                                      , get_permalink( $post_id ) 
                                                                     ) 
                                                      ) 
                                  )

       ?>


    </div>

But the submit-button for the comment-field (which is in the left column) only displays after the content of ‘logged_in_as’.
screenshot of the comment-form

Read More

But I want to place the submit-button on the left side below the comment-field. How can I place the Submit-Button before the ‘logged_in_as’-Content?

Related posts

Leave a Reply

2 comments

  1. You don’t change the ordering, essentially. If you need to reposition things on the page, you should use CSS. That’s what it’s for.

    The submit button is in a P with a class of form-submit. You can use that to move it around with CSS.

  2. 8 Years ago maybe it was like this, but now you specify it in your functions.php
    (for all the people coming across this thread now)

    //Comment Field Order
    add_filter( 'comment_form_fields', 'mo_comment_fields_custom_order' );
    function mo_comment_fields_custom_order( $fields ) {
        $comment_field = $fields['comment'];
        $author_field = $fields['author'];
        $email_field = $fields['email'];
        $url_field = $fields['url'];
        $cookies_field = $fields['cookies'];
        unset( $fields['comment'] );
        unset( $fields['author'] );
        unset( $fields['email'] );
        unset( $fields['url'] );
        unset( $fields['cookies'] );
        // the order of fields is the order below, change it as needed:
        $fields['author'] = $author_field;
        $fields['email'] = $email_field;
        $fields['url'] = $url_field;
        $fields['comment'] = $comment_field;
        $fields['cookies'] = $cookies_field;
        // done ordering, now return the fields:
        return $fields;
    }