I’m creating a custom WordPress Theme and I can’t seem to get the single.php template to work. Below is the code I have written. The title comes up but the content doesn’t. Any Ideas why it isn’t?
<?php
/**
* The Template for displaying all single posts.
*/
get_header(); ?>
<div id="content" role="main">
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>
<div class="entry">
<?php the_content(); ?>
</div>
<p class="postmetadata"><?php the_tags('Tags: ', ', ', '<br />'); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?> <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>
</div>
</div><!-- #content -->
See here for a screenshot of the output:
the_content()
is not displaying because it has to be inside the The Loop – take a look at the docs here »You need to change your code to this:
You can leave out the
else
if you are always sure you have content to display 🙂 Or just take look at the originalsingle.php
where you can find The Loop always surroundsthe_content()
edit:
Here is the whole single.php you might wanna use/start with:
I just simply put
the_post()
abovethe_content()
and it workedI’m writing this because I had a similar problem. My content wasn’t showing up. However my call to the_content was inside the The Loop. Furthermore, this was working on my development server but not on the production server.
I was able to solve this by removing all the plugins and then, one by one, add them back in.
Also, of course, if you have caching enabled, a good first step is to clear the cache.