Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

How would I move elements of the WordPress comment form, which is called in comments.php with the following:

<?php comment_form(); ?>

For instance, I'd like to wrap cancel_comment_reply_link in h4 tags and place it below get_post_reply_link. But I don't see any way to do it.

Formerly, all the code for the comment form was there in comments.php. You could easily move the elements around and place them where you wanted. Now, all of those elements are buried as functions in comments-template.php.

Has someone created a function and callback, similar to the one that exists for wp_list_comments, that provides access to the elements of the comment form?

If so, we might more easily edit the code to move links, labels and fields.

share|improve this question
add comment

1 Answer

I think your best bet is to take a look at Otto's post all about the comment form and functions, here: http://ottopress.com/2010/wordpress-3-0-theme-tip-the-comment-form/

If you want to cut to the chase, you can add this function to your functions.php:

function my_fields($fields) {
$fields['new'] = '<p>Some new input field here</p>';
return $fields;
}
add_filter('comment_form_default_fields','my_fields');

Then set new defaults, changing your HTML and Class/ID's as you like:

$defaults = array(
    'fields'               => apply_filters( 'comment_form_default_fields', $fields ),
    'comment_field'        => '<p class="comment-form-comment">...',
    'must_log_in'          => '<p class="must-log-in">...',
    'logged_in_as'         => '<p class="logged-in-as">...',
    'comment_notes_before' => '<p class="comment-notes">...',
    'comment_notes_after'  => '<dl class="form-allowed-tags">...',
    'id_form'              => 'commentform',
    'id_submit'            => 'submit',
    'title_reply'          => __( 'Leave a Reply' ),
    'title_reply_to'       => __( 'Leave a Reply to %s' ),
    'cancel_reply_link'    => __( 'Cancel reply' ),
    'label_submit'         => __( 'Post Comment' ),
);

In this case, I'm unsure if you can apply a class or ID directly to the "cancel reply link". You can try wrapping it in a <span> tag here, or just use some creative javascript to find it and apply a class:

$('a:contains("Cancel Reply")').addClass('cancel-reply-link');
share|improve this answer
    
Tom, I've been up and down Otto's post, inside and out. At this point, I've given up on doing anything with a link in the comment form but add some CSS style. But as I am not an accomplished scripter, let me at least ask this question: Say I want to change the text of cancel_reply_link to, "Cancel your reply". What specific code would I paste in functions.php to accomplish this? –  user5486 Jul 20 '11 at 1:16
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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