Позволяет изменить отрывок записи, получаемый через 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->post_excerpt, которое может быть пустым.$post: отрывок могут получать для другой записи.Пример действует только для записей типа 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(). При ручном вызове фильтра передавайте корректный объект записи вторым аргументом хука, поскольку обработчики могут его ожидать.
Приоритет 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_category | 0 | 19.09 | 20-09-2026 |
| 2 | Хук-Фильтр WordPress: wp_title | 0 | 18.33 | 20-09-2026 |
| 3 | Хук-Фильтр WordPress: post_type_link | 0 | 21.11 | 21-09-2026 |
| 4 | Хук-Фильтр WordPress: paginate_links | 0 | 17.69 | 20-09-2026 |
| 5 | Хук-Фильтр WordPress: excerpt_length | 0 | 19.41 | 20-09-2026 |
| 6 | Хук-событие WordPress: restrict_manage_posts | 0 | 12.4 | 22-09-2026 |
| 7 | Хук-событие WordPress: edit_post_(post_type) | 0 | 18.33 | 22-09-2026 |
| 8 | Хук-событие WordPress: network_admin_edit_(action) | 0 | 21.16 | 01-10-2026 |
| 9 | Хук-событие WordPress: wp_insert_post | 0 | 19.09 | 20-09-2026 |
| 10 | Хук-событие WordPress: in_widget_form | 0 | 16.25 | 20-09-2026 |