excerpt_length │ хук-фильтр │ WP 2.7.0

Позволяет изменить максимальное количество слов в автоматически создаваемом отрывке записи. По умолчанию используется 55 слов.

Фильтр не ограничивает отрывок, который пользователь указал вручную.

Для изменения текста в конце сокращённого отрывка используйте фильтр excerpt_more.

Использование

add_filter( 'excerpt_length', 'wp_kama_excerpt_length_filter' );

/**
 * Function for `excerpt_length` filter-hook.
 * 
 * @param int $number The maximum number of words.
 *
 * @return int
 */
function wp_kama_excerpt_length_filter( $number ){
	// filter...
	return $number;
}
$number(int)
Максимальное количество слов. По умолчанию 55.

Примеры

#1 Ограничить отрывок до 20 слов

add_filter( 'excerpt_length', 'wp_kama_excerpt_length', 999 );

function wp_kama_excerpt_length( $number ) {
	return 20;
}

Высокий приоритет нужен, если тема или плагин изменяет длину отрывка после этого фильтра.

#2 Изменить длину только на фронтенде

add_filter( 'excerpt_length', 'wp_kama_frontend_excerpt_length', 999 );

function wp_kama_frontend_excerpt_length( $number ) {
	if ( is_admin() ) {
		return $number;
	}

	return 30;
}

#3 Установить разную длину в зависимости от страницы

add_filter( 'excerpt_length', 'wp_kama_conditional_excerpt_length', 999 );

function wp_kama_conditional_excerpt_length( $number ) {
	if ( is_page_template( 'page-templates/services.php' ) ) {
		return 30;
	}

	if ( is_front_page() && is_home() ) {
		return 80;
	}

	return $number;
}

#4 Получить длину из настройки темы

add_filter( 'excerpt_length', 'wp_kama_theme_excerpt_length', 999 );

function wp_kama_theme_excerpt_length( $number ) {
	$custom_length = get_theme_mod( 'custom_excerpt_length' );

	if ( ! $custom_length ) {
		return $number;
	}

	return absint( $custom_length );
}

Список изменений

С версии 2.7.0 Введена.

Где вызывается хук

wp_trim_excerpt()
excerpt_length
render_block_core_latest_posts()
excerpt_length
wp-includes/formatting.php 4081
$excerpt_length = (int) apply_filters( 'excerpt_length', $excerpt_length );
wp-includes/blocks/latest-posts.php 167
$excerpt_length = (int) apply_filters( 'excerpt_length', $block_core_latest_posts_excerpt_length );

Где используется хук в WordPress

wp-includes/blocks/latest-posts.php 231
remove_filter( 'excerpt_length', 'block_core_latest_posts_get_excerpt_length', 20 );
wp-includes/blocks/latest-posts.php 59
add_filter( 'excerpt_length', 'block_core_latest_posts_get_excerpt_length', 20 );
wp-includes/blocks/post-excerpt.php 116
add_filter( 'excerpt_length', 'block_core_post_excerpt_excerpt_length', PHP_INT_MAX );
wp-includes/blocks/post-excerpt.php 53
add_filter( 'excerpt_length', 'block_core_post_excerpt_excerpt_length', PHP_INT_MAX );
wp-includes/blocks/post-excerpt.php 57
remove_filter( 'excerpt_length', 'block_core_post_excerpt_excerpt_length', PHP_INT_MAX );