WordPress.org

Ready to get started?Download WordPress

Forums

[resolved] Adding Comments Are Closed (5 posts)

  1. dcartgallery
    Member
    Posted 4 years ago #

    Okay, searching for a resoltuion yielded no results, as it seems everyone asking about this topic wants the notice removed, not included.

    Anyway, here's my dilemna. I have set up my comments so that the acutal comments are in one column and the entry form is in the other, like so:

    http://clients.jackygilbertson.ca/newsletter/2009/december/winter-art-classes

    However, I intend to have comments closed on entries after a certain amount of time. However, when that happens, the comment form disappears (which is fine) while the comments remain, but The "comments are closed" message is no where to be seen, like so:

    http://clients.jackygilbertson.ca/newsletter/exhibition/hello-world

    ...but if there are NO comments, the message will appear!

    http://clients.jackygilbertson.ca/newsletter/2009/december/wait-theres-even-more

    So, my question is: how do I get the "comments are closed" notice to show up when there are comments?

    I've attached the contents of my comment page:

    <?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
    			?>
    
    			<p class="nocomments">This post is password protected. Enter the password to view comments.</p>
    
    			<?php
    			return;
    		}
    	}
    
    	/* This variable is for alternating comment background */
    	$oddcomment = 'class="alt" ';
    ?>
    
    <!-- You can start editing here. -->
    
    <?php if ($comments) : ?>
    <div class="comments">
    	<h2 id="comments">Comments</h2>
    
    	<ul class="commentlist">
    
    	<?php foreach ($comments as $comment) : ?>
    
    		<li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
    			<div class="comment-author"><cite><?php comment_author_link() ?></cite> says:</div>
    				<?php if ($comment->comment_approved == '0') : ?>
    					<em>Your comment is awaiting moderation.</em>
    				<?php endif; ?>
    
    			<div class="comment-content"><?php comment_text() ?></div>
    
    			<div class="comment-date">
    				Posted on <?php comment_date('F jS, Y') ?> at <?php comment_time() ?>
    				<?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?>
    			</div>
    
    		</li>
    
    	<?php
    		/* Changes every other comment to a different class */
    		$oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : '';
    	?>
    
    	<?php endforeach; /* end for each comment */ ?>
    
    	</ul>
    </div>
    
     <?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. -->
    <div class="comments">
    		<h2 id="comments">Comments</h2>
    		<p>There are no comments for this entry yet. Add your comment by adding the form to your right.</p>
    </div>
    
    	 <?php else : // comments are closed ?>
    		<!-- If comments are closed. -->
    
    <div class="comment-post">
    <h2 id="respond">Comments are Closed</h2>
    
    <strong>Comments are now closed for this article.</strong></p>
    </div>
    
    	<?php endif; ?>
    <?php endif; ?>
    
    <?php if ('open' == $post->comment_status) : ?>
    
    <div class="comment-post">
    <h2 id="respond">Leave a Comment</h2>
    
    <p>Feel free to leave your comments on the article or event in the field below. We only ask that you please be respectful of others and refrain from using foul language. Comments may be sent to moderation before being posted publicly. Thank you!</p>
    
    <?php if ( get_option('comment_registration') && !$user_ID ) : ?>
    <p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_permalink(); ?>">logged in</a> 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 <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Logout &raquo;</a></p>
    
    <?php else : ?>
    
    <p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" 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; ?>" 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; ?>" tabindex="3" />
    <label for="url"><small>Website</small></label></p>
    
    <?php endif; ?>
    
    <!--<p><small><strong>XHTML:</strong> You can use these tags: <code><?php echo allowed_tags(); ?></code></small></p>-->
    
    <p><textarea name="comment" id="comment" rows="10" tabindex="4"></textarea></p>
    
    <p><center><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Your Comment" />
    <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" /></center>
    </p>
    <?php do_action('comment_form', $post->ID); ?>
    
    </form>
    
    </div>
    
    <?php endif; // If registration required and not logged in ?>
    
    <?php endif; // if you delete this the sky will fall on your head ?>
  2. mtw28
    Member
    Posted 4 years ago #

    Looks like the block of code that displays "comments are closed" is wrapped in an "if there are no comments yet" condition. Remove that condition by deleting this line and the endif pair at the end and it should display for all posts, not just ones with no comments yet.

    Delete this line:

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

    that's above the following code

    <?php if ('open' == $post->comment_status) : ?>
    		<!-- If comments are open, but there are no comments. -->
    <div class="comments">
    		<h2 id="comments">Comments</h2>
    		<p>There are no comments for this entry yet. Add your comment by adding the form to your right.</p>
    </div>
    
    	 <?php else : // comments are closed ?>
    		<!-- If comments are closed. -->
    
    <div class="comment-post">
    <h2 id="respond">Comments are Closed</h2>
    
    <strong>Comments are now closed for this article.</strong></p>
    </div>
    
    	<?php endif; ?>

    and delete this endif that follows the code above:

    <?php endif; ?>
  3. dcartgallery
    Member
    Posted 4 years ago #

    Thank you for your help, but once I do that I get this error:

    Parse error: syntax error, unexpected $end in /home/dubiousnu/clients.jackygilbertson.ca/newsletter/wp-content/themes/artsconnection/comments.php on line 119

  4. dcartgallery
    Member
    Posted 4 years ago #

    Oh! I managed to do it!

    I put this `<?php endif; // If registration required and not logged in ?>

    <?php else : // comments are closed ?>
    <!-- If comments are closed. -->

    <div class="comment-post">
    <h2 id="respond">Comments are Closed</h2>

    Comments are now closed for this article.</p>
    </div>

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

    at the bottom of my comments.php, between the last endif;. Yes!

  5. llizard
    Member
    Posted 4 years ago #

    Thank you for this post. I have a wordpress blog on which only some articles allow comments. But the comments are closed after a certain time.

    Using the above, I figured out how to show the "comments are now closed" on the posts that allowed comments, but nothing at all for those that had the comments open but didn't receive any comments (just as with any posts that never had comments open).

    I thought others might want to achieve the same thing. This is what I did:

    I commented out the "no comments yet" near the top of the comments template:

    <?php else : // If there are no comments yet ?>
    	<!-- p>No comments yet.</p -->
    <?php endif; ?>

    then looked for the following that appears further below

    <?php endif; // If registration required and not logged in ?>
    <?php else : // Comments are closed  ?>

    and replaced what was underneath THAT with the following at the bottom of comments.php

    <!--p>Comments are now closed for this article.</p -->
    <?php endif; ?>
    
    <?php if ( have_comments() ) : // but comments are closed ?>
    <p>Comments are now closed for this article</p>
    <?php else :   ?>
    <?php // show nothing at all ?>
    <?php endif; ?>

    Note that the first "comments are now closed" is commented out (or just remove it) and now appears AFTER if ( have_comments()

    (I hope that all made sense....)

    -ejm, wp2.9.1

Topic Closed

This topic has been closed to new replies.

About this Topic