7

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

16

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'];
  • Small improvement to be consistent with the_content() function: echo apply_filters('the_content', $content_parts['main']); – long May 20 at 13:03
0

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.