WP_TRIM_WORDS() │ WP 3.3.0
Функция WP_TRIM_WORDS() обрезает данный текст до указанного количества слов. Это полезная функция в WordPress, которую можно использовать вместо функции the_excerpt()
для вывода части контента, обрезанной до нужного количества слов.
Если вам нужно обрезать HTML-строку до определенного количества символов, используйте функцию wp_html_excerpt()
.
Локализация
Эта функция поддерживает локализацию: для языков, которые учитывают «слова» по отдельным символам (например, восточноазиатские языки), параметр $num_words
будет применяться к количеству отдельных символов.
Использование функции
Функция использует wp_strip_all_tags()
, чтобы удалить все теги из текста.
Возврат значения
Функция возвращает строку — обрезанный текст.
Использование функции
wp_trim_words( $text, $num_words, $more );
Параметры
- $text (string) (обязательный) — текст, который нужно обрезать.
- $num_words (number) — количество слов. Определяет, сколько слов оставить в начале строки. Значение по умолчанию — 55.
- $more (string) — текст, который добавляется в конце строки, если текст был обрезан. По умолчанию используется многоточие - …, чтобы показать, что текст был обрезан. Значение по умолчанию:
…
.
Примеры
Пример 1: Обрезка текста до 5 слов
$text = '"Posner" - еженедельная программа Владимира Познера, которая транслируется с ноября 2008 года на Первом канале';
echo wp_trim_words( $text, 5, ' ...' );
// Вывод:
// "Posner" - еженедельная ...
Пример 2: Обрезка содержимого поста
В этом примере показано, как получить содержимое текущего поста, обрезать его до 40 слов и добавить ссылку «Читать дальше», если это необходимо:
$content = get_the_content();
$trimmed_content = wp_trim_words( $content, 40,
sprintf( ' ...Читать дальше', get_permalink() )
);
echo $trimmed_content;
Изменения
Функция была впервые представлена в версии 3.3.0.
Код функции
Для тех, кто хочет увидеть сам код функции:
function wp_trim_words( $text, $num_words = 55, $more = null ) {
if ( null === $more ) {
$more = __( '…' );
}
$original_text = $text;
$text = wp_strip_all_tags( $text );
$num_words = (int) $num_words;
if ( str_starts_with( wp_get_word_count_type(), 'characters' ) && preg_match( '/^utf-?8$/i', get_option( 'blog_charset' ) ) ) {
$text = trim( preg_replace( "/[nrt ]+/", ' ', $text ), ' ' );
preg_match_all( '/./u', $text, $words_array );
$words_array = array_slice( $words_array[0], 0, $num_words + 1 );
$sep = '';
} else {
$words_array = preg_split( "/[nrt ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
$sep = ' ';
}
if ( count( $words_array ) > $num_words ) {
array_pop( $words_array );
$text = implode( $sep, $words_array );
$text = $text . $more;
} else {
$text = implode( $sep, $words_array );
}
return apply_filters( 'wp_trim_words', $text, $num_words, $more, $original_text );
}
С помощью этой функции вы можете легко обрезать тексты в ваших записях на WordPress, делая их более удобными для чтения.