How to show comments in static pages?
-
Hey, I’d like to have comments show up prominently in the static pages (e.g. About, etc.) of the site. The WordPress editor lets you click a box “allow comments”, but the option to leave a comment doesn’t actually seem to show up on the page. Is there any way to make the comment field and the received comments show up on the static pages (as opposed to just the blog posts)?
Thanks.
-
Hi Ojala,
You need to edit the page.php file so it has the following code in it
<?php comments_template(); ?>
This should generate the comment box and comments. If this doesn’t work, contact your theme designer.Thanks a lot tomontoast! I did what you suggested, and it does show up with a comment box and an option to send it, but the actual comments themselves don’t show up on the page. Is there some other bit of code I should insert to get it to show up?
It really depends on your theme. Does your page say “No responses to… ” or does it say “Comments are closed” or does it say nothing.
Check that comments are open in your settings and on your individual page.It just doesn’t show the comments. I can see them in my admin page, but they don’t show up on the public page proper. There’s no message saying “no responses” or anything like that. I have set comments to open in Settings and on the individual page.
Ok this means your comments.php file is different to the default theme. Either replace your comments.php file with the comments.php file from the default (kubrick) theme or post your comments.php file so that I can have a look at it and add the necessary code for displaying the comments.
Wow, thanks a lot tomontoast! Here it is. If it’s too annoying to look at, don’t worry about it.
page.php template
<?php get_header(); ?>
<div id=”main”>
<div id=”contentwrapper”>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?><div class=”topPost”>
<h2 class=”topTitle”>“><?php the_title(); ?></h2>
<div class=”topContent”><?php the_content(‘(continue reading…)’); ?></div>
<div class=”cleared”></div>
</div> <!– Closes topPost –><?php endwhile; ?>
<?php else : ?>
<div class=”topPost”>
<h2 class=”topTitle”>“>Not Found</h2>
<div class=”topContent”><p>Sorry, but you are looking for something that isn’t here. You can search again by using this form…</p></div>
</div> <!– Closes topPost –><?php endif; ?>
<?php comments_template(); ?>
</div> <!– Closes contentwrapper–>
<?php get_sidebar(); ?>
<div class=”cleared”></div></div><!– Closes Main –>
<?php get_footer(); ?>
Sorry I wasn’t clear enough. I wanted you to show me comments.php the file which generates the comments box and hopefully the comments themselves. A link to your site might also be helpful in finding the problem.
Ah, sorry. I’ve just started trying to learn php and I’m still quite clueless!
The comments.php file:
<?php // Do not delete these lines
// thanks to Jeremy at https://clarktech.no-ip.com for the tips
if (!empty($_SERVER[‘SCRIPT_FILENAME’]) && ‘comments.php’ == basename($_SERVER[‘SCRIPT_FILENAME’]))
die (‘Please do not load this page directly. Thanks!’);
if (function_exists(‘post_password_required’))
{
if ( post_password_required() )
{
echo ‘<p class=”nocomments”>This post is password protected. Enter the password to view comments.</p>’;
return;
}
} else
{
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;
}
}
}
if (function_exists(‘wp_list_comments’)):
//WP 2.7 Comment Loop
if ( have_comments() ) : ?><?php if ( ! empty($comments_by_type[‘comment’]) ) :
$count = count($comments_by_type[‘comment’]);
($count !== 1) ? $txt = “Comments for this entry” : $txt = “Comment for this entry”; ?>
<h3 id=”comments”><?php echo $count . ” ” . $txt; ?></h3>
<ul class=”commentlist”>
<?php wp_list_comments(‘type=comment&callback=mytheme_comment’); ?><?php endif; ?>
<div class=”navigation”>
<div class=”alignleft”><?php previous_comments_link() ?></div>
<div class=”alignright”><?php next_comments_link() ?></div>
<div class=”cleared”></div>
</div><?php if ( ! empty($comments_by_type[‘pings’]) ) :
$countp = count($comments_by_type[‘pings’]);
($countp !== 1) ? $txtp = “Trackbacks / Pingbacks for this entry” : $txtp = “Trackback or Pingback for this entry”; ?>
<h3><?php echo $countp . ” ” . $txtp; ?></h3>
<ul class=”trackback”>
<?php wp_list_comments(‘type=pings&callback=mytheme_ping’); ?><?php endif; ?>
<?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.
else : ?><p class=”nocomments”>Comments are closed.</p>
<?php endif;
endif;
else:
//WP 2.6 and older Comment Loop
/* This variable is for alternating comment background */
$oddcomment = ‘alt’;
?><!– You can start editing here. –>
<?php if ($comments) : ?>
<h3 id=”comments”><?php comments_number(‘No comments filed’, ‘One comment’, ‘% comments’ );?> to “<?php the_title(); ?>”</h3>
<ol class=”commentlist”>
<?php foreach ( $comments as $comment ) : ?>
<li class=”<?php echo $oddcomment; ?>” id=”comment-<?php comment_ID() ?>”>
<?php
$mygravatarurl = get_bloginfo(‘template_directory’).”/images/gravatar-trans.png”;if (function_exists(‘get_avatar’)) {
echo get_avatar( $comment, 60, $mygravatarurl);
} else {
//alternate gravatar code for < 2.5
$grav_url = “https://www.gravatar.com/avatar.php?gravatar_id=
” . md5($email) . “&default=” . urlencode($default) . “&size=” . $size;
echo “<img src=’$grav_url’ height=’60px’ width=’60px’ />”;
}
?><div class=”commentbody”>
<cite><?php comment_author_link() ?></cite>
<?php if ($comment->comment_approved == ‘0’) : ?>
Your comment is awaiting moderation.
<?php endif; ?><small class=”commentmetadata”>” title=””><?php comment_date(‘F jS, Y’) ?> on <?php comment_time() ?> <?php edit_comment_link(‘edit’,’ ‘,”); ?></small>
<?php comment_text() ?>
</div><div class=”cleared”></div><!– clears the floats so the backgrounds show all the way down –><?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 endif; // 2.6 and older Comment Loop end ?>
<?php if (‘open’ == $post->comment_status) : ?>
<div class=”cleared”></div>
<div id=”respond”>
<h3>Leave a Reply</h3>
<?php if (function_exists(‘cancel_comment_reply_link’)) {
//2.7 comment loop code ?>
<div id=”cancel-comment-reply”>
<small><?php cancel_comment_reply_link();?></small>
</div>
<?php } ?><?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></div>
<?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=”22″ 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=”22″ 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=”22″ tabindex=”3″ />
<label for=”url”><small>Website</small></label></p>
<?php endif; ?><?php if (function_exists(‘cancel_comment_reply_link’)) {
//2.7 comment loop code ?>
<?php comment_id_fields(); ?>
<?php } ?><!–<p><small>XHTML: You can use these tags: <?php echo allowed_tags(); ?></small></p>–>
<p><textarea name=”comment” id=”comment” cols=”100%” rows=”10″ tabindex=”4″></textarea></p>
<p><input name=”submit” type=”submit” id=”submit” class=”submitbutton” tabindex=”5″ value=”Leave comment” />
<input type=”hidden” name=”comment_post_ID” value=”<?php echo $id; ?>” />
</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 ?>
i have the same problem what is the correct answer ?
noone knows ? :S
Thank you for this thread! You have helped me tremendously! MaryH
I had the same problem. My theme, blogtxt, doesn’t show the comment form on Pages. The journalist theme does have this feature, by the way.
What I finally did (that worked!) was to make a copy of the single.php file (blogtxt) and put the template name at the beginning ie:
‘<?php
/*
Template Name: single page
*/
?>’
and saved it as singlepg.phpNow when I write a page, I select ‘single page’ from the template drop down box – and comments are then included on the page.
- The topic ‘How to show comments in static pages?’ is closed to new replies.