Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to customize Wordpress comment_form();

I am currently developing my own Wordpress theme and have been recently working on a custom comments_template();. I have read that using the wp_list_comments(); method is best practice for pulling in and displaying the comments per page/post. I have successfully customized the way that the comments are pulled in through that method and displayed.

I have also read that using the comment_form(); method is the best practice for displaying the comment form. However, I am really struggling with trying to customize this. I am a little confused between the $args, filters and actions.

Essentially I would like to drastically change parts of the comment form. How might I go about changing parts of the comment form while still using best practice with the comment_form(); method?

All I am really needing to do is wrap several of the existing <p> tags in <divs>. List of updates I am trying to make are below:

  1. Tweak the <h3> header to <h2 class="comments-header">Tell us about you!</h2>
  2. Wrap form fields in <fieldset></fieldset>
  3. Wrap <label> in <div class="label"></div>
  4. Wrap <input> in <div class="field"></div>
  5. Make <p class="form-allowed-tags"></p> display before the comment <textarea> rather than after
  6. Change form Submit button to use the <button> element rather than <input>

Please see the code below for further explanation...

Default comment_form(); code that is output:

<div id="respond">
    <h3 id="reply-title">Leave a Reply</h3>
    <form action="http://localhost/.../wp-comments-post.php" method="post" id="commentform">
        <p class="comment-notes">
            Your email address will not be published. Required fields are marked
            <span class="required">*</span>
        </p>
        <p class="comment-form-author">
            <label for="author">Name</label>
            <span class="required">*</span>
            <input id="author" name="author" type="text" value="John Doe" size="30" aria-required="true">
        </p>
        <p class="comment-form-email">
            <label for="email">Email</label>
            <span class="required">*</span>
            <input id="email" name="email" type="text" value="[email protected]" size="30" aria-required="true">
        </p>
        <p class="comment-form-url">
            <label for="url">Website</label>
            <input id="url" name="url" type="text" value size="30">
        </p>
        <p class="comment-form-comment">
            <label for="comment">Comment</label>
            <textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea>
        </p>
        <p class="form-allowed-tags">
            You may use these HTML tags and attributes...
        </p>
        <p class="form-submit">
            <input name="submit" type="submit" id="submit" value="Post Comment">
            <input type="hidden" name="comment_post_ID" value="22" id="comment_post_ID">
            <input type="hidden" name="comment_parent" id="comment_parent" value="0">
        </p>
    </form>
</div> <!-- #respond -->

Code I am trying to output:

<div id="respond">
    <h2 class="comments-header">Tell us about you!</h2>
    <form action="http://localhost/.../wp-comments-post.php" method="post" id="commentform">
        <fieldset>
            <div class="label"><label for="author">Name <span class="required">*</span></label></div>
            <div class="field"><input id="author" name="author" type="text" value="<?php echo $comment_author_email; ?>" size="30" aria-required="true"></div>
        </fieldset>
        <fieldset>
            <div class="label"><label for="email">E&ndash;mail (will not be published) <span class="required">*</span></label></div>
            <div class="field"><input id="email" name="email" type="text" value="<?php echo $comment_author_email; ?>" size="30" aria-required="true"></div>
        </fieldset>

        <p class="form-allowed-tags">
            You may use these HTML tags and attributes...
        </p>

        <fieldset>
            <div class="field"><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></div>
        </fieldset>

        <p class="form-submit">
            <button class="story-submit-btn" type="submit" name="submit" id="sub">Post your story</button>
            <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" id="comment_post_ID">
            <input type="hidden" name="comment_parent" id="comment_parent" value="0">
        </p>
    </form>
</div> <!-- #respond -->

Any help is GREATLY appreciated!

like image 841
kaffolder Avatar asked Jul 04 '12 18:07

kaffolder


People also ask

How do I customize my WordPress blog plugins?

Install Your Free WordPress Plugins To find the plugin you're looking for, simply type the name of it in the search box. Click the “Install Now” button for the plugin you want to add. The button will change to a blue “Activate” button. Click it to add the plugin and its functionality to your website.

How do I change the Leave comment text in WordPress?

The Leave a Reply text can be edited in your WP Admin Dashboard. You can access dashboard by adding /wp-admin to the end of your site's url. Then go to Settings → Discussion and scroll down Comment Form. The Prompt field allows you to customize the text that displays above the comment form on your site.

How do I add a comment box in WordPress?

On the post or page you wish to add comments to, find the “Discussion” box, and check “Allow Comments.” (If you do not see the “Discussion” box on the Edit Page, click “Screen Options” in the upper right corner of the browser window. Make sure the box next to “Discussion” is checked.)


1 Answers

Simple example how to change some comment form fields.

$comments_args = array(
        // change the title of send button 
        'label_submit'=>'Send',
        // change the title of the reply section
        'title_reply'=>'Write a Reply or Comment',
        // remove "Text or HTML to be displayed after the set of comment fields"
        'comment_notes_after' => '',
        // redefine your own textarea (the comment body)
        'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><br /><textarea id="comment" name="comment" aria-required="true"></textarea></p>',
);

comment_form($comments_args);

For more information: comment_form() documentation on WordPress Codex

like image 184
krishna singh Avatar answered Nov 15 '22 03:11

krishna singh