6

Is there a way to wrap the submit button with html element while using wordpress function comment_form function.

$comments_args = array(
            'id_form'               => 'main-contact-form',
            'class_form'            => 'contact-form',
            'class_submit'          => 'btn btn-primary btn-lg',
            'label_submit'          => 'Add Comment',
            'fields'                =>  $fields,
            'title_reply_before'    => '<div class="message_heading"><h4>',
            'title_reply_after'    => '</h4><p>Make sure you enter the(*)required information where indicate.HTML code is not allowed</p></div>',
            'comment_field' => '
                <div class="row"><div class="col-sm-7">                        
                    <div class="form-group">
                        <label>Message *</label>
                        <textarea name="message" id="message" required="required" class="form-control" rows="8"></textarea>
                    </div> 
                </div>'

        );

        comment_form($comments_args);

I want output code for submit button be like:

 <div class="form-group">
     <input type="submit" class="btn btn-primary btn-lg>
 </div>
9

We can use comment_form function's submit_button parameter to change submit button HTML.

Default HTML for submit_button is

<input name="%1$s" type="submit" id="%2$s" class="%3$s" value="%4$s" />

You can change your code like this.

$comments_args = array(
   ....

   'submit_button' => '<div class="form-group">
            <input name="%1$s" type="submit" id="%2$s" class="%3$s" value="%4$s" />
        </div>'

   ....
);

Update:

Regarding %1$s , %2$s and so on..

If you take a look at comment_form() source, you can see that submit_button is going through sprintf like this.

$submit_button = sprintf(
  $args['submit_button'],
    esc_attr( $args['name_submit'] ),
    esc_attr( $args['id_submit'] ),
    esc_attr( $args['class_submit'] ),
    esc_attr( $args['label_submit'] )
);
  • 1
    It worked well.. Can you explain why you used %1$s, %2$s. I found it useful for custom arguments 'class_submit', 'label_submit'. How actually it works? – Ashish May 3 '16 at 10:09
  • 1
    @asisStha That's a thing with sprintf(). Check this – bravokeyl May 3 '16 at 10:16
  • 2
    @asisStha, updated the answer to give some idea – bravokeyl May 3 '16 at 10:25
5

Please place below code in your theme's functions.php file and it will wrap the submit button inside div:

// define the comment_form_submit_button callback
function filter_comment_form_submit_button( $submit_button, $args ) {
    // make filter magic happen here...
    $submit_before = '<div class="form-group">';
    $submit_after = '</div>';
    return $submit_before . $submit_button . $submit_after;
};

// add the filter
add_filter( 'comment_form_submit_button', 'filter_comment_form_submit_button', 10, 2 );
0

Even more updated answer:

'submit_field' => '<p class="form-submit">%1$s %2$s</p>',

protected by Community May 7 at 9:16

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.