The get_the_excerpt WordPress PHP filter allows you to modify the post excerpt after it is retrieved from the database and before it is returned from the get_the_excerpt()
function.
Usage
function your_custom_function( $excerpt, $post ) { // your custom code here return $excerpt; } add_filter( 'get_the_excerpt', 'your_custom_function', 10, 2 );
Parameters
$post_excerpt
(string) – The post excerpt.$post
(WP_Post) – Post object.
More information
See WordPress Developer Resources: get_the_excerpt
Examples
Prevent Automatic Excerpts in WP REST API
Disable automatic excerpt generation from the_content via following filter hook.
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
Limit Excerpt Length
Limit the post excerpt to 30 characters.
function limit_excerpt_length( $excerpt ) { if ( strlen( $excerpt ) > 30 ) { $excerpt = substr( $excerpt, 0, 30 ) . '...'; } return $excerpt; } add_filter( 'get_the_excerpt', 'limit_excerpt_length' );
Add Read More Link
Add a “Read More” link at the end of the post excerpt.
function add_read_more_link( $excerpt, $post ) { $read_more_link = ' <a href="' . get_permalink( $post ) . '">Read More</a>'; return $excerpt . $read_more_link; } add_filter( 'get_the_excerpt', 'add_read_more_link', 10, 2 );
Display Custom Message for Empty Excerpts
Display “No excerpt available” when the post excerpt is empty.
function custom_empty_excerpt_message( $excerpt ) { if ( empty( $excerpt ) ) { $excerpt = 'No excerpt available.'; } return $excerpt; } add_filter( 'get_the_excerpt', 'custom_empty_excerpt_message' );
Remove Shortcodes from Excerpt
Remove all shortcodes from the post excerpt.
function remove_shortcodes_from_excerpt( $excerpt ) { $excerpt = strip_shortcodes( $excerpt ); return $excerpt; } add_filter( 'get_the_excerpt', 'remove_shortcodes_from_excerpt' );
Capitalize Excerpt
Capitalize the first letter of the post excerpt.
function capitalize_excerpt( $excerpt ) { $excerpt = ucfirst( $excerpt ); return $excerpt; } add_filter( 'get_the_excerpt', 'capitalize_excerpt' );
Limit the length of the excerpt
This example limits the length of the excerpt to 20 words.
add_filter('get_the_excerpt', 'limit_excerpt_length', 10, 2); function limit_excerpt_length($post_excerpt, $post) { $words = explode(' ', $post_excerpt); return implode(' ', array_slice($words, 0, 20)) . '...'; }
Add a “Read more” link to the excerpt
This example adds a “Read more” link to the end of the excerpt.
add_filter('get_the_excerpt', 'add_read_more_link', 10, 2); function add_read_more_link($post_excerpt, $post) { $read_more_link = sprintf('<a href="%s">Read more</a>', get_permalink($post)); return $post_excerpt . ' ' . $read_more_link; }
Remove shortcodes from the excerpt
This example removes any shortcodes from the excerpt.
add_filter('get_the_excerpt', 'remove_shortcodes_from_excerpt', 10, 2); function remove_shortcodes_from_excerpt($post_excerpt, $post) { return strip_shortcodes($post_excerpt); }
Add a custom prefix to the excerpt
This example adds a custom prefix “Summary: ” to the excerpt.
add_filter('get_the_excerpt', 'add_custom_prefix_to_excerpt', 10, 2); function add_custom_prefix_to_excerpt($post_excerpt, $post) { return 'Summary: ' . $post_excerpt; }
Modify the excerpt based on post category
This example adds a custom prefix to the excerpt based on the post category.
add_filter('get_the_excerpt', 'modify_excerpt_based_on_category', 10, 2); function modify_excerpt_based_on_category($post_excerpt, $post) { if (in_category('news', $post)) { return 'News: ' . $post_excerpt; } elseif (in_category('events', $post)) { return 'Event: ' . $post_excerpt; } return $post_excerpt; }