Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Хук-Фильтр WordPress: get_the_excerpt

Дата публикации: 22-09-2026 21:58:47

Позволяет изменить отрывок записи, получаемый через get_the_excerpt().

Основное содержимое страницы с новостью.

Позволяет изменить отрывок записи, получаемый через get_the_excerpt().

Фильтр применяется к значению поля post_excerpt перед возвратом результата. Изменения не сохраняются в БД. Он также влияет на the_excerpt(), которая получает текст через get_the_excerpt().

По умолчанию к хуку подключена wp_trim_excerpt() с приоритетом 10. Если переданный текст пуст (после удаления пробелов по краям), она создаёт отрывок из контента записи. Обычно это первые 55 слов без HTML, с окончанием […]. Длину и окончание меняют фильтры excerpt_length и excerpt_more. Непустой отрывок, заданный вручную, автоматически не сокращается.

Выбирайте приоритет обработчика по задаче:

  • Меньше 10: изменить исходный текст до автоматического создания отрывка. Если вернуть непустую строку, стандартная генерация из содержимого не выполнится.
  • Больше 10: изменить результат после стандартной обработки.

Хук используется и в REST API: при подготовке excerpt.rendered записей и caption.rendered вложений. Поля raw содержат исходное значение. Если изменение нужно только для определённого типа записи, проверяйте $post->post_type.

В самой get_the_excerpt() хук не вызывается, если запись не найдена или post_password_required() возвращает true.

В REST API вызывается до проверки пароля для excerpt.rendered; при отсутствии доступа это поле затем становится пустой строкой.

Для изменения форматирования при выводе через the_excerpt() используйте фильтр the_excerpt. Он применяется после get_the_excerpt; к нему подключены, в частности, типографика и добавление абзацев.

Использование
add_filter( 'get_the_excerpt', 'wp_kama_get_the_excerpt_filter', 10, 2 );

/**
 * Function for `get_the_excerpt` filter-hook.
 * 
 * @param string  $post_excerpt The post excerpt.
 * @param WP_Post $post         Post object.
 *
 * @return string
 */
function wp_kama_get_the_excerpt_filter( $post_excerpt, $post ){
	// filter...
	return $post_excerpt;
}
$post_excerpt(строка)
Фильтруемый отрывок.
Изначально это значение $post->post_excerpt, которое может быть пустым.
К моменту вызова обработчика текст уже могли изменить предыдущие фильтры, включая wp_trim_excerpt().
$post(WP_Post)
Объект записи, для которой получают отрывок.
Используйте этот объект вместо глобальной $post: отрывок могут получать для другой записи.
Примеры#1 Добавим ссылку «Читать далее» к отрывку

Пример действует только для записей типа post с заполненным полем отрывка. Проверка has_excerpt() отличает ручной отрывок от автоматически созданного.

add_filter( 'get_the_excerpt', 'mytheme_excerpt_read_more', 20, 2 );

function mytheme_excerpt_read_more( $excerpt, $post ) {

	if ( 'post' !== $post->post_type || ! has_excerpt( $post ) ) {
		return $excerpt;
	}

	return $excerpt . sprintf( <a href="%s">%s</a>',
		esc_url( get_permalink( $post ) ),
		esc_html__( 'Читать далее', 'mytheme' )
	);
}
#2 Ограничим длину отрывка

Фильтр excerpt_length сам по себе не сокращает отрывок. Здесь явно применим длину и окончание через wp_trim_words(). Также удалит HTML-теги.

add_filter( 'get_the_excerpt', 'mytheme_trim_manual_excerpt', 20, 2 );

function mytheme_trim_manual_excerpt( $excerpt, $post ) {

	if ( 'post' !== $post->post_type || ! has_excerpt( $post ) ) {
		return $excerpt;
	}

	$length = (int) apply_filters( 'excerpt_length', (int) _x( '55', 'excerpt_length' ) );
	$more   = apply_filters( 'excerpt_more', ' […]' );

	return wp_trim_words( $excerpt, $length, $more );
}

То же правило действует для произвольной непустой строки: передача её в

apply_filters( 'get_the_excerpt', $text, $post )

не запускает стандартное сокращение. Сначала используйте wp_trim_words(). При ручном вызове фильтра передавайте корректный объект записи вторым аргументом хука, поскольку обработчики могут его ожидать.

#3 Заменим пустой результат текстом-заглушкой

Приоритет 20 позволяет сначала выполнить стандартную генерацию. Заглушка появится, только если результат всё ещё пуст. Если нужна заглушка вместо генерации из содержимого, используйте приоритет 5.

add_filter( 'get_the_excerpt', 'mytheme_excerpt_fallback', 20, 2 );

function mytheme_excerpt_fallback( $excerpt, $post ) {

	if ( 'post' === $post->post_type && '' === trim( $excerpt ) ) {
		return __( 'Откройте запись, чтобы прочитать материал.', 'mytheme' );
	}

	return $excerpt;
}

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1Хук-Фильтр WordPress: the_category019.0920-09-2026
2Хук-Фильтр WordPress: wp_title018.3320-09-2026
3Хук-Фильтр WordPress: post_type_link021.1121-09-2026
4Хук-Фильтр WordPress: paginate_links017.6920-09-2026
5Хук-Фильтр WordPress: excerpt_length019.4120-09-2026
6Хук-событие WordPress: restrict_manage_posts012.422-09-2026
7Хук-событие WordPress: edit_post_(post_type)018.3322-09-2026
8Хук-событие WordPress: network_admin_edit_(action)021.1601-10-2026
9Хук-событие WordPress: wp_insert_post019.0920-09-2026
10Хук-событие WordPress: in_widget_form016.2520-09-2026

Классификация: Мнения. Схожих патентов: 0. Схожих новостей: 10. Тональность: 0. Информативность: 19.09. Источник: wp-kama.ru.