The excerpt_length WordPress PHP filter allows you to modify the maximum number of words in a post excerpt.
Usage
function custom_excerpt_length( $length ) { // your custom code here return $length; } add_filter( 'excerpt_length', 'custom_excerpt_length', 10, 1 );
Parameters
$length
(int): The maximum number of words in the excerpt. Default is 55.
More information
See WordPress Developer Resources: excerpt_length
Examples
Change excerpt length to 20 words
Set the post excerpt length to 20 words.
function mytheme_custom_excerpt_length( $length ) { return 20; } add_filter( 'excerpt_length', 'mytheme_custom_excerpt_length', 999 );
Double the excerpt length
Double the default excerpt length (110 words).
function double_excerpt_length( $length ) { return $length * 2; } add_filter( 'excerpt_length', 'double_excerpt_length', 10, 1 );
Set a specific excerpt length for a category
Set the excerpt length to 30 words for posts in the “news” category.
function news_excerpt_length( $length ) { if ( in_category( 'news' ) ) { return 30; } return $length; } add_filter( 'excerpt_length', 'news_excerpt_length', 10, 1 );
Set different excerpt lengths based on post type
Set excerpt length to 75 words for “page” post type and 40 words for “post” post type.
function post_type_excerpt_length( $length ) { if ( get_post_type() == 'page' ) { return 75; } elseif ( get_post_type() == 'post' ) { return 40; } return $length; } add_filter( 'excerpt_length', 'post_type_excerpt_length', 10, 1 );
Set excerpt length based on the number of posts
Increase the excerpt length by 5 words for every 3 posts.
function dynamic_excerpt_length( $length ) { global $wp_query; $current_post = $wp_query->current_post; $extra_words = floor( $current_post / 3 ) * 5; return $length + $extra_words; } add_filter( 'excerpt_length', 'dynamic_excerpt_length', 10, 1 );