A bit of PHP to preserve html formatting in standard WordPress excerpts

Code Snippet Related Categories

Reason for needing the Code Snippet

If you don’t use the Excerpt field in your posts and rely on WordPress to grab the first few dozen words of your post content what you usually find is the excerpt when displayed on the front end (usually in some sort of archive or post grid display) will have most of the html tags removed leaving you with a single block of plain text.

If I go to the bother of formatting my post content to make it more interesting and easier to read and understand I’d like that formatting to be preserved even in that post’s excerpt.

(This post was viewed 2,768 times) in the last month.)

What the Code Snippet does

This bit of php code, put in your functions.php file does the trick. It's well commented so you know what it's doing and is pretty easy to tweak. This gives you nicely formatted content in your post excerpts and RSS feeds too.

The html tags I've chosen to include in excerpts are:
<strong><b><em><i><a><code><kbd><p><br><ul><ol><li><img><blockquote>

What the page looks like Before and After

Here's the Code Snippet

The following is an updated version that appears to work better with WordPress 6.x and Full Site Editing Block themes:

function filter_post_excerpt_attrs( $metadata ) {
    if ( 'core/post-excerpt' === $metadata['name'] ) {
        $metadata["attributes"]["excerptLength"] = false;
    }
    return $metadata;
};

add_filter( 'block_type_metadata', 'filter_post_excerpt_attrs', 10 );

 

Below is the original code that doesn't seem to work with current WordPress and FSE Block themes - try the above code instead.

/**
* allow formatted text in excerpts
**/
function better_trim_excerpt($text)
{
$raw_excerpt = $text;
if ( '' == $text ) {
$text = get_the_content('');
$text = strip_shortcodes( $text );
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]&gt;', $text);

// Removes any JavaScript in posts (between <script> and </script> tags)
$text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);

// Enable formatting in excerpts - Add HTML tags that you want to be parsed in excerpts, default is 55
$text = strip_tags($text, '<strong><b><em><i><a><code><kbd><p><br><ul><ol><li><img>');

// Set custom excerpt length - number of words to be shown in excerpts
$excerpt_length = apply_filters('excerpt_length', 60);

// Modify excerpt more string at the end from [...] to ...
// $excerpt_more = apply_filters('excerpt_more', ' ' . '...');

$words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
if ( count($words) > $excerpt_length ) {
array_pop($words);
$text = implode(' ', $words);

// IMPORTANT! Prevents tags cutoff by excerpt (i.e. unclosed tags) from breaking formatting
$text = force_balance_tags( $text );

$text = $text . $excerpt_more;
} else {
$text = implode(' ', $words);
}
}
return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}

// Remove the native excerpt function, and replace it with our improved function
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'better_trim_excerpt');

I found this code at the bottom of this page: wordpress.stackexchange.com

Limit search for phrases by using " " around the phrase

Subscribe to Code Snippet updates

You will get an email the morning after we post a new Code Snippet

Something went wrong. Please check your entries and try again.

Other Recent Code Snippets

Using the Right Tools Makes All the Difference 1

Using the Right Tools Makes All the Difference

Posted in , , , ,

The Start of a New Website Project Master Roofing Company  is a family-owned and operated Oakland roofing contractor with nearly 40 years experience of servicing residential and commercial clients in and around the San Francisco Bay Area. They had a Yelp page, but they didn’t have their own website. The […]

Read More
WordPress Resources at SiteGround 2

WordPress Resources at SiteGround

Posted in , , , ,

WordPress is an award-winning web software, used by millions of webmasters worldwide for building their website or blog. SiteGround is proud to host this particular WordPress installation and provide users with multiple resources to facilitate the management of their WP websites: Expert WordPress Hosting SiteGround provides superior WordPress hosting focused […]

Read More
How to embed a viewable pdf in a WordPress post 3

How to embed a viewable pdf in a WordPress post

Posted in , , , ,

Normally putting the URL of a pdf on a line by itself doesn’t display the pdf on a Word­Press page, and if you use the add media button and paste the URL for the pdf into the URL field, you get a link that will open the pdf, but the pdf does not display on the page itself,

Read More
Trouble moving your site to Godaddy Managed WordPress Hosting Plan? - Here are some pointers 4

Trouble moving your site to Godaddy Managed WordPress Hosting Plan? – Here are some pointers

Posted in , , , , ,

Recently a reader raised a question in a comment to a previous post. He was confused about how to move an existing site to Godaddy Managed WordPress Hosting. Having done this several dozen times now I’ve developed some “best practices” and work-arounds I can share.

Read More
Google filters out websites that are not mobile-friendly from search results - how to check your site 5

Google filters out websites that are not mobile-friendly from search results – how to check your site

Posted in , , , ,

Google has started rolling out filtering for Google searches from mobile devices. If you site doesn’t meet the criteria for mobile-friendly, your site won’t show up in the search results no matter how relevant your page is to the search. As more folks are visiting websites using smartphones and tablets […]

Read More
Is it time to give GoDaddy WordPress hosting another chance? 6

Is it time to give GoDaddy WordPress hosting another chance?

Posted in , , , , , , ,

Hosting your WordPress website on GoDaddy has been strongly discouraged by me and most of the WordPress consultants I know. But GoDaddy has just introduced a new WordPress Managed Hosting plan that may change all that.

Read More

Pieter Hartsook

WordPress website coaching, design, implementation, support, and training. Background in Marketing Research and Communications. See my profile at: https://www.linkedin.com/in/hartsook/

Reader Interactions

Comments

  1. I think that depends on where the Read More link is supposed to appear, and what underlying framework you’re using to display the excerpt. I use Beaver Builder for most of my projects and using this code snippet I still see the Read More link on post archive (query loop) pages.

Leave a Reply

Your email address will not be published. Required fields are marked *

Skip to content