Only show content before more tag

The question:

I am using the Siren Template. In homepage.php this code is used to display the portfolio content

print_excerpt(200);

But I to need show the content only before <!--more-->

I have used this:

the_content( $more_link_text, FALSE);

but it is not working. It shows all the content

The Solutions:

Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.

Method 1

You can use the WordPress function get_extended to fetch the different parts of a string (the part before and the part after the <!--more--> tag). get_extended returns an array with three keys, of which the keys main and extended are important: $arr['main'] contains the part before the more tag, and $arr['extended'] the part after the more tag.

This would yield something like:

// Fetch post content
$content = get_post_field( 'post_content', get_the_ID() );

// Get content parts
$content_parts = get_extended( $content );

// Output part before <!--more--> tag
echo $content_parts['main'];

Method 2

Unfortunally it seems like all functions in WordPress that are supposed to render the excerpt (get_extended, get_extended) don’t apply HTML tags nor convert carriage returns in paragraphs as aspected.

If you need to render the excerpt with formatting, I suggest that you use this code:

global $more;
$more_backup = $more;
$more = 0;
the_content('');
$more = $more_backup;

With this work-around you are telling to the_content() function that it is inside a loop, getting the content before the more tag.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Comment