Attention Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

Function Reference/the content


Displays the contents of the current post. This template tag must be within The_Loop.

If the quicktag <!--more--> is used in a post to designate the "cut-off" point for the post to be excerpted, the_content() tag will only show the excerpt up to the <!--more--> quicktag point on non-single/non-permalink post pages. By design, the_content() tag includes a parameter for formatting the <!--more--> content and look, which creates a link to "continue reading" the full post.

Note about <!--more--> :
  • No whitespaces are allowed before the "more" in the <!--more--> quicktag. In other words <!-- more --> will not work!
  • The <!--more--> quicktag will not operate and is ignored in Templates where just one post is displayed, such as single.php.
  • Read Customizing the Read More for more details.


<?php the_content$more_link_text$stripteaser ); ?>

How to pass parameters to tags with PHP function-style parameters


(string) (optional) The link text to display for the "more" link.
Default: '(more...)'
(boolean) (optional) Strip teaser content before the more text.
Default: false


Designating the "More" Text

Displays the content of the post and uses "Read more..." for the more link text when the <!--more--> Quicktag is used.

<?php the_content('Read more...'); ?>

Include Title in "More"

Similar to the above example, but thanks to the_title() tag and the display parameter, it can show "Continue reading ACTUAL POST TITLE" when the <!--more--> Quicktag is used.

<?php the_content("Continue reading " . get_the_title()); ?>

Overriding Archive/Single Page Behavior

If the_content() isn't working as you desire (displaying the entire story when you only want the content above the <!--more--> Quicktag, for example) you can override the behavior with global $more.

global $more;    // Declare global $more (before the loop).
$more = 0;       // Set (inside the loop) to display content above the more tag.

if you need to display all of the content:

global $more;    // Declare global $more (before the loop).
$more = 1;       // Set (inside the loop) to display all content, including text below more.

Ignore the "More" on a Sticky Post

This will ignore the more tag in a sticky post--meaning it will display the full content even if there is a <!--more--> in the content, but for all other posts it will display a more link.

if (is_sticky()) {
  global $more;    // Declare global $more (before the loop).
  $more = 1;       // Set (inside the loop) to display all content, including text below more.
} else {
  global $more;
  $more = 0;
  the_content('Read the rest of this entry »');

Alternative Usage

You may use get_the_content() to return the content value instead of outputting it directly. Example:

<?php $content = get_the_content(); ?>

Please note! get_the_content will return the unfiltered content. If you want to achieve the same output that the_content() returns, use the following code:

$content = apply_filters( 'the_content', get_the_content() );
$content = str_replace( ']]>', ']]&gt;', $content );


Since: 0.71

Source File

the_content() is located in wp-includes/post-template.php.


See also index of Function Reference and index of Template Tags.