We’re doing some SEO tweaking to a site, and our SEO guru informs us that we need to remove the <h3> tags from the #reply-title element, output from line 1554 of comments-template.php. It’s the header text for the comments form.

as seen here :

<?php if ( comments_open( $post_id ) ) : ?>
        <?php do_action( 'comment_form_before' ); ?>
        <div id="respond">
            <h3 id="reply-title"><?php comment_form_title( $args['title_reply'], $args['title_reply_to'] ); ?> <small><?php cancel_comment_reply_link( $args['cancel_reply_link'] ); ?></small></h3>
            <?php if ( get_option( 'comment_registration' ) && !is_user_logged_in() ) : ?>

We’re aware of the numerous filters and hooks associated with the comment_form();, but that <h3> is hard-coded.

for this, we’ve been unable to come up w/ a sustainable solution to replacing the <h3 id="reply-title"></h3> with just <div id="reply-title"></div>.

it’s starting to look like the quickest / easiest option may be to just unhook the call to comment_form(); and hook in a copy of our own function, which would be just a copy, with a simple change to that one line.

But in the meantime, it never hurts to poll the community. Any ideas on how to modify that markup in a sustainable ( non-core hackable ) way?

It should be noted that this can’t be solved w/ some CSS or JS. The actual, crawlable DOM has to be dealt with.

thanks again stack.

4 s
4

Today there is a native option to do this without hacking the core, or doing tricky filters with output buffer. You just need to use the filter 'comment_form_defaults' and edit the values from 'title_reply_before' and 'title_reply_after' key:

add_filter( 'comment_form_defaults', 'custom_reply_title' );
function custom_reply_title( $defaults ){
  $defaults['title_reply_before'] = '<span id="reply-title" class="h4 comment-reply-title">';
  $defaults['title_reply_after'] = '</span>';
  return $defaults;
}

In this exemple, i have wrapped the title with a span tag that have no impact on SEO with a class named .h4, with a same style that the original h4 tag has:

h4, .h4 {
/* styles */
}

This way, you can keep the styling from a header without messing up with your SEO. (:

If you are using Bootstrap, this class already exists and are styled the same way i mentioned above to all headers. From H1 to H6 and the respective classes.

Leave a Reply

Your email address will not be published. Required fields are marked *