Frage

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

War es hilfreich?

Lösung

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'];

Andere Tipps

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top