Last Wednesday at 1 a.m., I received a voice message. The client’s voice carried obvious panic: “The homepage has scrolled five screens and I still haven’t reached the bottom. It’s nothing but product descriptions. My store looks like a wholesale warehouse.”
This wasn’t my first encounter with this scenario. Over the past three years, I’ve probably handled more than twenty similar emergencies. Interestingly, 80% of the people who reach out to me have already tried every toggle in the WordPress admin—they’ve even combed through their theme’s settings panel, only to discover the nonexistent “Show Excerpt” button.
Here’s the truth: many commercial themes aren’t designed to let you control this easily.
First, Recognize the Problem: You’re Probably Using a “Fake” Excerpt
WordPress core actually provides a standard excerpt mechanism, but a large number of themes choose to bypass it entirely.
Open your post editor, click Screen Options in the top-right corner, and check Excerpt. You’ll see a text box at the bottom. If you manually write a description there, the theme should, in theory, call the_excerpt() to display it. This is the method I personally recommend, because it gives you pixel‑perfect control over every word.
But the reality is different. Many themes—especially multipurpose themes from outside the WordPress ecosystem—hardcode the_content() in their homepage loops. They either ignore your manually written excerpt or attempt to “auto‑truncate” in ways that don’t respect character encoding, resulting in garbled text or cutoffs in awkward places.
Last year, I helped a client using Avada. Their “Blog” element completely bypassed the standard WordPress loop. Even though the backend clearly showed “Show Excerpt,” the front end kept dumping full content. I ended up forcing an intercept in functions.php, stripped shortcodes with regex, and hard‑truncated the output to 200 characters using mb_strimwidth before it rendered.
It wasn’t elegant, but it worked. The client didn’t care what priority I set on the hook; they just wanted their homepage to stop looking like a warehouse shelf.
Three Battle‑Tested Approaches—Choose Based on Your Situation
Approach 1: Hijack the Standard Loop (Ideal for Most Free Themes)
If you’re using a theme that follows WordPress coding standards—like the Twenty series, Astra, or GeneratePress—this is straightforward.
Locate your theme’s index.php, archive.php, or home.php, and search for:
<?php the_content(); ?>Replace it with:
<?php the_excerpt(); ?>But there’s a catch that affects sites using multibyte languages (or simply wanting shorter previews).
WordPress defaults to truncating at 55 English words. For many sites, that’s far too long. Worse, if a post lacks a manual excerpt, WordPress automatically pulls from the post body, and the built‑in truncation isn’t always multibyte‑safe.
My go‑to solution is to control everything from functions.php:
function custom_excerpt_length($length) { return 100; // character count, I usually set between 80–120 } add_filter('excerpt_length', 'custom_excerpt_length', 999); function new_excerpt_more($more) { return '… <a href="' . get_permalink() . '">Read More</a>'; } add_filter('excerpt_more', 'new_excerpt_more');
The 999 priority isn’t arbitrary—some themes add their own filters. Using a high priority ensures your settings override the theme’s defaults.
Approach 2: Manual Cutoff (Ideal When You Need to Preserve Formatting)
Sometimes you don’t want the_excerpt() because it strips all HTML tags. But you also don’t want the full content.
In the Gutenberg editor, insert the More block (or press Alt+Shift+T). This writes the <!--more--> tag into the database. When you call the_content() on the front end, WordPress automatically shows only the content before that tag, followed by a “Continue reading” link.
I’ve found a hidden advantage to this method: it preserves all formatting from the section before the cut. If you’ve used bold text, lists, or even images in the opening paragraphs, they’ll stay intact in the excerpt. the_excerpt(), by default, strips everything down to plain text.
However, be aware that some page builders (Elementor, Divi, WPBakery) don’t natively support the more tag. This is a common source of confusion—users insert the tag, nothing happens on the front end, because the builder bypasses WordPress’s native loop.
Approach 3: Force a Hard Truncate (For Uncooperative Commercial Themes)
This is the least elegant but most effective fallback. When a theme author uses custom queries, custom templates, or even JavaScript to dynamically pull content, there’s no standard loop for you to modify.
Here’s the emergency code I keep in my toolkit:
function force_content_truncate($content) { // Only apply on archive pages, not single posts if (!is_single() && in_the_loop() && !is_admin()) { // Strip shortcodes first to avoid raw [vc_row] etc. $text = strip_shortcodes($content); // Remove all HTML tags to prevent broken layouts $text = wp_strip_all_tags($text); // Multibyte‑safe truncation; adjust length as needed $text = mb_strimwidth($text, 0, 200, '…', 'UTF-8'); return '<p>' . $text . '</p><a href="' . get_permalink() . '" class="read-more">Continue reading →</a>'; } return $content; } add_filter('the_content', 'force_content_truncate', 20);
I’ve used this snippet on at least five different themes. The priority of 20 ensures it runs after the theme’s own filters, acting as a final gatekeeper.
When Plugins Make Sense (and When They Don’t)
I’m not a fan of installing a plugin just for excerpts, but there are two exceptions:
Exception 1: You need to preserve specific HTML tags
Imagine a recipe blog where the excerpt must show styled badges like “🔥 Spicy” or “🚚 Free Delivery”. In this case, Advanced Excerpt is my recommendation. It lets you whitelist tags (<strong>, <em>, <a>, etc.) and truncate by character count instead of words—much friendlier for non‑English content.
Exception 2: You absolutely don’t want to touch code
If you’re managing a site for a client who refuses file edits, a lightweight excerpt plugin can be the path of least resistance. Advanced Excerpt or similar tools let you set the length and read‑more link from the WordPress admin, zero code required.
One caveat: every plugin adds overhead. I measured a site that installed four “tiny” utility plugins; TTFB (Time To First Byte) jumped from 0.4s to 1.2s. If your server is already underpowered, think twice before using a plugin for something you can solve with 10 lines of code.
The Performance Dividend: Excerpts Aren’t Just About Aesthetics
Last year, I audited a site with 30,000 daily active users. Their homepage displayed ten full articles, each with three high‑resolution images. First‑contentful paint clocked in at 7.8 seconds. Bounce rate: 68%.
After switching to excerpts, the page weight dropped from 4.2 MB to 0.8 MB. Load time fell to 2.1 seconds. Bounce rate improved to 45%.
The logic is simple: rendering full posts means processing every lazy‑loaded image, every embedded video, every shortcode. Excerpts require only plain text (or minimal HTML). Database queries are lighter, server rendering is faster, and the client device decodes far less data.
Google’s PageSpeed Insights treats “Total Blocking Time” and “Largest Contentful Paint” as critical metrics. Excerpts directly attack the root cause of heavyweight pages.
My Current Standard Workflow
After years of trial and error, I’ve settled on a decision tree for different project types:
Personal blogs / content sites
→ Write manual excerpt boxes + the_excerpt(). Investing 30 seconds per post to craft an 80‑100 word summary gives you precise control and is SEO‑friendly.
Corporate brochure sites
→ First, check if the theme uses the standard loop. If yes, swap the_content() for the_excerpt(). If not, go straight to the hard‑truncate filter—don’t waste time hunting for a nonexistent toggle.
E‑commerce hybrids (products + blog)
→ Hard truncate is mandatory. WooCommerce’s product-description and blog post_content are often mixed together, and themes rarely offer separate controls.
Client sites under maintenance
→ Pre‑install the hard‑truncate snippet in functions.php with a high priority. This guarantees the site survives theme updates without reverting to full‑text chaos.
An SEO Detail Most People Overlook
The content you put in the Excerpt meta box and the Meta Description field (Yoast, Rank Math, etc.) are two different things.
Excerpt box → Displayed on your site’s homepage, category pages, and archives. It’s for human visitors who are already on your site.
Meta description → Displayed on Google’s search results page (SERP). It’s for users who haven’t clicked through yet.
They can be identical, or they can be different. My habit: write excerpts that are slightly more “click‑bait,” with a hint of suspense. Write meta descriptions that are fact‑dense and include the core keyword.
Google may sometimes pull the meta description as the SERP snippet, sometimes pull on‑page content—it depends on what it thinks best matches the query. But the excerpt on your homepage is 100% controlled by the_excerpt(). It has nothing to do with your SEO plugin’s meta description.
If you open your site right now and find the homepage still vomiting full articles, don’t blame yourself. Don’t assume you missed a setting.
The theme simply didn’t give you the choice.
Forcing it to shut up with a little code isn’t shameful. It’s pragmatic. Users don’t care about your technical purity—they care whether the homepage feels clean, fast, and trustworthy.

