WP_TRIM_WORDS() в WordPress: обрезка текста до указанного количества слов. Руководство с примерами кода.

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, делая их более удобными для чтения.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *