Customize Read More in Genesis Themes (excerpt_more filter)
Change the Genesis “Read More” link text and styling site-wide with a single excerpt_more filter. Works on Genesis 3.x and the StudioPress block-editor migration — no child-theme template override needed.
Most Genesis tutorials tell you to override excerpt.php in the child theme or drop a filter into /lib/. Neither survives parent-theme updates cleanly. This filter lives in functions.php, applies globally, and can be scoped per post type or per template with a one-line conditional. Genesis lost most of its market share to block themes after 2022, but if you still run SquareType, True Blogger, or any Genesis child theme, this is the cleanest hook.
What this snippet does
- Replaces the default Genesis “[…]” read-more link with custom text
- Optionally wraps the link in a button class so it matches your theme’s CTA style
- Works globally on archives, home, search, and taxonomy pages
- Scopable to specific post types or templates with a one-line conditional
- Reverts cleanly — remove the filter and Genesis’s default returns
- Compatible with the Genesis Block Theme migration path (2024+)
Install and use
Paste into your child theme functions.php. Edit the link text. Style the resulting .read-more anchor in your stylesheet.
<?php
/**
* Customize the Genesis Read More link on archives.
* Works on Genesis 3.x classic child themes.
*/
add_filter( 'excerpt_more', function ( $more ) {
return sprintf(
'… <a class="read-more" href="%s">Continue reading →</a>',
esc_url( get_permalink() )
);
} );
/**
* Same, but scoped to the post type only (leave CPT excerpts untouched).
*/
add_filter( 'excerpt_more', function ( $more ) {
if ( 'post' !== get_post_type() ) return $more;
return sprintf(
' <a class="read-more btn btn-outline" href="%s">Read the full post →</a>',
esc_url( get_permalink() )
);
} );
/**
* If your theme uses the classic <!--more--> teaser instead of excerpts:
*/
add_filter( 'the_content_more_link', function ( $more, $link ) {
return sprintf(
' <a class="read-more" href="%s">Continue reading →</a>',
esc_url( get_permalink() )
);
}, 10, 2 );How it works
Genesis uses WordPress core’s excerpt system, which fires the excerpt_more filter to produce the trailing “[…]” link on automatic excerpts. Returning a custom string replaces the whole link. get_permalink() inside a loop call resolves to the current post, so the anchor href is always correct. The second example scopes with get_post_type() !== "post" which keeps Genesis’s default on CPT archives. The third handles the older <!--more--> teaser system that some Genesis themes still use.
Download and source
- Gist: gist.github.com/wpgaurav
- Works on every Genesis 3.x child theme tested — StudioPress originals, Revelry themes, custom builds
- For block-theme migration (Genesis Block Theme, Kadence), this filter still fires — the excerpt pipeline is the same
FAQs
Does this work on the Genesis Block Theme?
Yes. The Block Theme migration kept WordPress core’s excerpt pipeline intact, so excerpt_more still fires wherever the theme renders an excerpt.
Will this affect the Read More block in post content?
No. The Read More block (<!--more-->) hits the the_content_more_link filter, not excerpt_more. The third code block above covers it.
How do I style the button?
Add a .read-more selector to your child-theme stylesheet. The second example adds btn btn-outline classes — use whatever button classes your theme already ships.
Does this work with Yoast SEO or Rank Math meta descriptions?
Yes. SEO plugins use get_the_excerpt() directly for meta-description generation — a different code path than archive excerpt rendering. Your meta descriptions stay clean; only archive UI gets the new link.
Is Genesis worth sticking with in 2026?
For existing Genesis sites with heavy customisation, yes — migrating away costs more than it returns. For new projects, the honest answer is no. Full Site Editing block themes (Ollie, Twenty Twenty-Five, my own tabor) plus a starter framework like the Marketers Delight family cover 95% of Genesis’s strengths without the hooks-everywhere complexity.