• I’m trying to get comments to show on the index page of a site I’m creating – I’ve already set it to show only one post on the index page. And after searching the codex and forums, I’ve found that apparently what you need to do for that is to add <?php comments_template() ?> within the Loop.

    So I did that – at least, I hope that’s what I did – but it doesn’t appear to be working. Here is the code I have in my template (a rather heavily modified version of metamorph_killerwhale):

    <?php
    while (have_posts())
    	 {
    	 the_post();
    	 $alternate=$i%2==0?"postentry1":"postentry2";
    ?>
    	<!-- start of post <?php the_title(); ?> -->
    	<div id="page-<?php echo the_ID();?>" class="<?php echo $alternate;?>">
    				<p class="date2"><?php the_time('M') ?> <b><?php the_time('d') ?></b></p>
    	<h4><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4><br />
    <p class="categor"><strong>Posted:</strong> under <?php the_category(', ') ?>.
    <?php the_tags('Tags: ', ', ',''); ?><?php edit_post_link('[edit]',' | ',''); ?></p>
    	<p class="post-body" style="display:none"><?php echo strip_tags(get_the_excerpt(), '<a><strong>'); ?> <a title="Permanent Link to <?php the_title(); ?>" href="<?php the_permalink() ?>" class="more">[...more]</a></p>
    	<p class="post-body"><?php the_content('Read More', strip_teaser, 'more_file'); ?></p>
    	<p class="date"><img src="<?php bloginfo('stylesheet_directory'); ?>/images/comment.gif" alt="" /> <a href="<?php comments_link(); ?>" class="entryComment">Comments (<?php comments_number('0', '1', '%'); ?>)</a> </p>
    	<!-- end of post <?php the_title(); ?> -->
    	</div>
    	<div id="comment">
    		<?php comments_template(); ?>
    	</div>
    	<br /><br />
    <?php
    	$i++;
    	 }
    ?>

    I had previously put the comment div inside the div that immediately precedes it, but when that didn’t work I tried putting it outside, where you see it above – still no result. When I view source on the resulting page, I see the opening and closing div tag for the comment section, but with nothing in between them – so the comments_template() function doesn’t appear to be executing at all.

    Does anyone have any idea what might be going wrong here?

Viewing 6 replies - 1 through 6 (of 6 total)
  • And you have the comments.php file programmed, I presume?

    Thread Starter spidersilk

    (@spidersilk)

    The comments.php file is the same as it was in the original theme, apart from a couple of minor formatting changes, and works on the single post page – but the index page doesn’t appear to be calling it.

    Thread Starter spidersilk

    (@spidersilk)

    Well, I poked around a bit further, and I think I found the answer, but it’s not a good answer. ??

    In wp-includes/comment-template.php it says (on line 619):

    * Will not display the comments template if not on single post or page, or if
    * the post does not have comments.

    And indeed, there is code in there that checks to make sure you are on either single or page before allowing the function to execute. So apparently, the inability to have comments on the index page is hard-coded into WordPress itself and not something that can be changed by anything one can do in a template. I suppose this must be new in recent versions, because I found several references to being able to use comment_template() on the index page when searching. I don’t know why they would change something like that.

    So since comments on the main page was a non-negotiable demand on the part of the client I’m doing this site for, I have to either see if there’s a plug-in that will do it, or alternatively edit the comment-template.php file (and remember to re-edit every time I upgrade WP, which sounds like a headache and a half), or switch to something other than WordPress. But since that last would be heresy, I’m hoping one of the other two options works out. :-/

    jlmcgowan

    (@jlmcgowan)

    I hope someone can help me. I want my comments box to always be visible under each post. However, it’s not showing up. It only reads “# Comments”

    Here’s the coding in my themes comments.php I have no idea what to change to get the comments box to show up. I have set it so that Commentors do not have to register or be logged into comment…Which coding is causing the comments box to not be visible under the post?

    <?php // Do not delete these lines
    if (‘comments.php’ == basename($_SERVER[‘SCRIPT_FILENAME’])) die (‘Please do not load this page directly. Thanks!’);
    if (!empty($post->post_password)) { // if there’s a password
    if ($_COOKIE[‘wp-postpass_’ . COOKIEHASH] != $post->post_password) { // and it doesn’t match the cookie
    ?>

    <h2><?php _e(‘Password Protected’); ?></h2>
    <p><?php _e(‘Enter the password to view comments.’); ?></p>

    <?php return;
    }
    }

    /* This variable is for alternating comment background */

    $oddcomment = ‘alt’;

    ?>

    <!– You can start editing here. –>

    <?php if ($comments) : ?>
    <h3 id=”comments”><?php comments_number(‘No Responses’, ‘One Response’, ‘% Responses’ );?> to “<?php the_title(); ?>”</h3>

    <ol class=”commentlist”>
    <?php foreach ($comments as $comment) : ?>

    <li class=”<?php echo $oddcomment; ?>” id=”comment-<?php comment_ID() ?>”>

    <div class=”commentmetadata”>
    <?php comment_author_link() ?>, <?php _e(‘on’); ?> ” title=””><?php comment_date(‘F jS, Y’) ?> <?php _e(‘at’);?> <?php comment_time() ?> <?php _e(‘Said:’); ?> <?php edit_comment_link(‘Edit Comment’,”,”); ?>
    <?php if ($comment->comment_approved == ‘0’) : ?>
    <?php _e(‘Your comment is awaiting moderation.’); ?>
    <?php endif; ?>
    </div>

    <?php comment_text() ?>

    <?php /* Changes every other comment to a different class */
    if (‘alt’ == $oddcomment) $oddcomment = ”;
    else $oddcomment = ‘alt’;
    ?>

    <?php endforeach; /* end for each comment */ ?>

    <?php else : // this is displayed if there are no comments so far ?>

    <?php if (‘open’ == $post->comment_status) : ?>
    <!– If comments are open, but there are no comments. –>
    <?php else : // comments are closed ?>

    <!– If comments are closed. –>
    <p class=”nocomments”>Comments are closed.</p>

    <?php endif; ?>
    <?php endif; ?>

    <?php if (‘open’ == $post->comment_status) : ?>

    <h3 id=”respond”>Leave a Reply</h3>

    <?php if ( get_option(‘comment_registration’) && !$user_ID ) : ?>
    <p>You must be /wp-login.php?redirect_to=<?php the_permalink(); ?>”>logged in to post a comment.</p>

    <?php else : ?>

    <form action=”<?php echo get_option(‘siteurl’); ?>/wp-comments-post.php” method=”post” id=”commentform”>
    <?php if ( $user_ID ) : ?>

    <p>Logged in as /wp-admin/profile.php”><?php echo $user_identity; ?>. /wp-login.php?action=logout” title=”Log out of this account”>Logout »</p>

    <?php else : ?>

    <p><input type=”text” name=”author” id=”author” value=”<?php echo $comment_author; ?>” size=”40″ tabindex=”1″ />
    <label for=”author”><small>Name <?php if ($req) echo “(required)”; ?></small></label></p>

    <p><input type=”text” name=”email” id=”email” value=”<?php echo $comment_author_email; ?>” size=”40″ tabindex=”2″ />
    <label for=”email”><small>Mail (will not be published) <?php if ($req) echo “(required)”; ?></small></label></p>

    <p><input type=”text” name=”url” id=”url” value=”<?php echo $comment_author_url; ?>” size=”40″ tabindex=”3″ />
    <label for=”url”><small>Website</small></label></p>

    <?php endif; ?>

    <!–<p><small>XHTML: <?php _e(‘You can use these tags:’); ?> <?php echo allowed_tags(); ?></small></p>–>

    <p><textarea name=”comment” id=”comment” cols=”60″ rows=”10″ tabindex=”4″></textarea></p>

    <p><input name=”submit” type=”submit” id=”submit” tabindex=”5″ value=”Submit Comment” />
    <input type=”hidden” name=”comment_post_ID” value=”<?php echo $id; ?>” />
    </p>

    <?php do_action(‘comment_form’, $post->ID); ?>

    </form>

    <?php endif; // If registration required and not logged in ?>

    <?php endif; // if you delete this the sky will fall on your head ?>

    Clifton Griffin

    (@clifgriffin)

    You need to edit your theme’s index file, not the comments file. See the link I posted above.

Viewing 6 replies - 1 through 6 (of 6 total)
  • The topic ‘comments_template() not working on main page’ is closed to new replies.