wp_trim_words

Позволяет изменить текстовое содержимое после обрезки слов
Хук WordPress
INT 3.3.0
WordPress Icon

Описание хука

Хук «wp_trim_words» позволяет определить, как будет изменено содержимое текста после его обрезки по словам. Этот хук вызывается после того, как текст был обрезан до указанного количества слов.

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

apply_filters( 'wp_trim_words', string $text, int $num_words, string $more, string $original_text )

В данном примере применяется фильтр «wp_trim_words» к тексту $text, который обрезается до $num_words слов. В конец обрезанного текста добавляется строка $more. $original_text содержит исходный текст до его обрезки.

  • $text (string): Обрезанный текст.
  • $num_words (int): Количество слов, до которого обрезается текст. По умолчанию 55.
  • $more (string): Дополнительная строка, добавляемая в конец обрезанного текста.
  • $original_text (string): Исходный текст до его обрезки.
<?php
/**
 * Функция, применяемая к хуку "wp_trim_words".
 *
 * @param string $text          Обрезанный текст.
 * @param int    $num_words     Количество слов, до которого обрезается текст.
 * @param string $more          Дополнительная строка, добавляемая в конец обрезанного текста.
 * @param string $original_text Исходный текст до его обрезки.
 * @return string Обработанный текст.
 */
function custom_trim_words( $text, $num_words, $more, $original_text ) {
    // Ваш код обработки текста
    return $text;
}
add_filter( 'wp_trim_words', 'custom_trim_words', 10, 4 );
?>

В данном примере создается функция custom_trim_words, которая применяется к хуку «wp_trim_words». Функция принимает обрезанный текст $text, количество слов $num_words, дополнительную строку $more и исходный текст $original_text. Внутри функции вы можете добавить свою обработку текста и вернуть обработанный результат.

Примеры использования

Изменение обрезанного текста


/**
 * Filters the text content after words have been trimmed.
 *
 * @param string $text          The trimmed text.
 * @param int    $num_words     The number of words to trim the text to. Default 55.
 * @param string $more          An optional string to append to the end of the trimmed text, e.g. ….
 * @param string $original_text The text before it was trimmed.
 * @return string The modified trimmed text.
 */
function custom_trim_words( $text, $num_words, $more, $original_text ) {
    // Modify the trimmed text here
    return $text;
}
add_filter( 'wp_trim_words', 'custom_trim_words', 10, 4 );

Добавление дополнительного текста


/**
 * Filters the text content after words have been trimmed.
 *
 * @param string $text          The trimmed text.
 * @param int    $num_words     The number of words to trim the text to. Default 55.
 * @param string $more          An optional string to append to the end of the trimmed text, e.g. ….
 * @param string $original_text The text before it was trimmed.
 * @return string The modified trimmed text with additional content.
 */
function custom_trim_words( $text, $num_words, $more, $original_text ) {
    // Append additional content to the trimmed text
    $text .= ' [Read More]';
    return $text;
}
add_filter( 'wp_trim_words', 'custom_trim_words', 10, 4 );

Форматирование обрезанного текста


/**
 * Filters the text content after words have been trimmed.
 *
 * @param string $text          The trimmed text.
 * @param int    $num_words     The number of words to trim the text to. Default 55.
 * @param string $more          An optional string to append to the end of the trimmed text, e.g. ….
 * @param string $original_text The text before it was trimmed.
 * @return string The formatted trimmed text.
 */
function custom_trim_words( $text, $num_words, $more, $original_text ) {
    // Format the trimmed text
    $text = '<p>' . $text . '</p>';
    return $text;
}
add_filter( 'wp_trim_words', 'custom_trim_words', 10, 4 );

Использование хука в пользовательских шаблонах


/**
 * Filters the text content after words have been trimmed.
 *
 * @param string $text          The trimmed text.
 * @param int    $num_words     The number of words to trim the text to. Default 55.
 * @param string $more          An optional string to append to the end of the trimmed text, e.g. ….
 * @param string $original_text The text before it was trimmed.
 * @return string The modified trimmed text.
 */
function custom_trim_words( $text, $num_words, $more, $original_text ) {
    // Modify the trimmed text based on the template being used
    if ( is_page_template( 'custom-template.php' ) ) {
        $text = 'Custom template: ' . $text;
    }
    return $text;
}
add_filter( 'wp_trim_words', 'custom_trim_words', 10, 4 );

Ограничение количества слов в заголовках


/**
 * Filters the text content after words have been trimmed.
 *
 * @param string $text          The trimmed text.
 * @param int    $num_words     The number of words to trim the text to. Default 55.
 * @param string $more          An optional string to append to the end of the trimmed text, e.g. ….
 * @param string $original_text The text before it was trimmed.
 * @return string The modified trimmed text.
 */
function custom_trim_words( $text, $num_words, $more, $original_text ) {
    // Limit the number of words in the trimmed text for headings
    if ( is_singular() && in_array( get_post_type(), array( 'post', 'page' ) ) ) {
        $num_words = 10; // Limit to 10 words for headings
    }
    return $text;
}
add_filter( 'wp_trim_words', 'custom_trim_words', 10, 4 );

Вопросы и ответы

Как изменить количество обрезаемых слов?

Для изменения количества обрезаемых слов в хуке wp_trim_words необходимо использовать фильтр wp_trim_words. Этот фильтр принимает четыре параметра: $text, $num_words, $more и $original_text.

Параметр $num_words определяет количество слов, до которого будет обрезаться текст. По умолчанию это значение равно 55. Чтобы изменить количество обрезаемых слов, нужно добавить фильтр с новым значением $num_words.

// Изменяем количество обрезаемых слов на 30
add_filter( 'wp_trim_words', function( $text, $num_words, $more, $original_text ) {
    $num_words = 30;
    return $text;
}, 10, 4 );

Как изменить символы, добавляемые в конец обрезанного текста?

Для изменения символов, добавляемых в конец обрезанного текста, таких как многоточие, необходимо использовать фильтр wp_trim_words. Параметр $more определяет строку, которая будет добавлена в конец обрезанного текста.

// Изменяем символы, добавляемые в конец обрезанного текста на "..."
add_filter( 'wp_trim_words', function( $text, $num_words, $more, $original_text ) {
    $more = '...';
    return $text;
}, 10, 4 );

Как получить оригинальный текст до обрезки?

Для получения оригинального текста до обрезки в хуке wp_trim_words можно использовать параметр $original_text. Этот параметр содержит текст, который был передан на обрезку.

// Выводим оригинальный текст до обрезки
add_filter( 'wp_trim_words', function( $text, $num_words, $more, $original_text ) {
    echo 'Оригинальный текст: ' . $original_text;
    return $text;
}, 10, 4 );

Как обрезать текст без добавления символов в конец?

Для обрезки текста без добавления символов в конец можно использовать хук wp_trim_words. Этот хук позволяет изменить текстовое содержимое после его обрезки.

Пример использования хука wp_trim_words:


function custom_trim_words( $text, $num_words, $more, $original_text ) {
    // Ваш код обрезки текста без добавления символов в конец
    return $text;
}
add_filter( 'wp_trim_words', 'custom_trim_words', 10, 4 );

Как обрезать текст с учетом HTML-тегов?

Для обрезки текста с учетом HTML-тегов можно использовать функцию wp_trim_words(). Эта функция позволяет указать количество слов, до которого нужно обрезать текст, и при этом сохраняет структуру HTML-тегов.

Пример использования функции wp_trim_words():


$text = '<p>Это пример текста с <a href="https://example.com">ссылкой</a> и <strong>жирным текстом</strong>.</p>';
$trimmed_text = wp_trim_words( $text, 5, '' );
echo $trimmed_text;

Как обрезать текст только до определенного HTML-тега?

Для обрезки текста только до определенного HTML-тега можно использовать функцию wp_trim_words() с дополнительным параметром $strip_tags. Этот параметр позволяет указать, нужно ли удалять HTML-теги после обрезки текста.

Пример использования функции wp_trim_words() с параметром $strip_tags:


$text = '<p>Это пример текста с <a href="https://example.com">ссылкой</a> и <strong>жирным текстом</strong>.</p>';
$trimmed_text = wp_trim_words( $text, 5, '', true );
echo $trimmed_text;

Как обрезать текст, игнорируя определенные HTML-теги?

Для обрезки текста в WordPress с игнорированием определенных HTML-тегов используется хук wp_trim_words. Этот хук позволяет изменить текстовое содержимое после его обрезки.

Для использования хука wp_trim_words необходимо передать следующие параметры:

  • $text — обрезанный текст.
  • $num_words — количество слов, до которого нужно обрезать текст. По умолчанию равно 55.
  • $more — необязательная строка, которая будет добавлена в конец обрезанного текста, например, «…».
  • $original_text — исходный текст до его обрезки.

Пример использования хука wp_trim_words:


function custom_trim_words( $text, $num_words, $more, $original_text ) {
  // Ваш код обработки текста
  return $text;
}
add_filter( 'wp_trim_words', 'custom_trim_words', 10, 4 );

Как обрезать текст, игнорируя определенные слова?

Для обрезки текста в WordPress с игнорированием определенных слов можно использовать хук wp_trim_words в сочетании с функцией str_word_count, которая подсчитывает количество слов в строке.

Пример использования хука wp_trim_words для игнорирования определенных слов:


function custom_trim_words( $text, $num_words, $more, $original_text ) {
  $words = str_word_count( $original_text, 1 );
  $ignore_words = array( 'ignore', 'these', 'words' );
  $filtered_words = array_filter( $words, function( $word ) use ( $ignore_words ) {
    return ! in_array( $word, $ignore_words );
  } );
  $text = implode( ' ', array_slice( $filtered_words, 0, $num_words ) );
  if ( count( $filtered_words ) > $num_words ) {
    $text .= $more;
  }
  return $text;
}
add_filter( 'wp_trim_words', 'custom_trim_words', 10, 4 );

Как обрезать текст, игнорируя определенные символы?

Для обрезки текста в WordPress с игнорированием определенных символов можно использовать хук wp_trim_words в сочетании с функцией preg_replace, которая заменяет совпадения с регулярным выражением.

Пример использования хука wp_trim_words для игнорирования определенных символов:


function custom_trim_words( $text, $num_words, $more, $original_text ) {
  $text = preg_replace( '/[^p{L}p{N}s]/u', '', $original_text );
  $words = explode( ' ', $text );
  $text = implode( ' ', array_slice( $words, 0, $num_words ) );
  if ( count( $words ) > $num_words ) {
    $text .= $more;
  }
  return $text;
}
add_filter( 'wp_trim_words', 'custom_trim_words', 10, 4 );

Хук wp_trim_words в WordPress позволяет изменять текстовое содержимое после его обрезки. С его помощью можно обрезать текст, игнорируя определенные HTML-теги, слова или символы. При использовании хука необходимо передать обрезанный текст, количество слов для обрезки, необязательную строку для добавления в конец обрезанного текста и исходный текст до его обрезки. Примеры кода из документации WordPress помогут вам понять, как использовать хук wp_trim_words для различных задач обрезки текста.

Связанные элементы

  • Функция wp_trim_words(): обрезает текст до указанного количества слов.
  • Функция wp_trim_excerpt(): обрезает текст до указанной длины и добавляет указанный текст в конце.
  • Хук excerpt_length: фильтрует количество слов в обрезанном тексте.
  • Хук excerpt_more: фильтрует текст, добавляемый в конце обрезанного текста.
  • Хук widget_text_content: фильтрует текст виджета перед его выводом.
  • Хук widget_text: фильтрует содержимое виджета перед его выводом.
  • Хук customize_render_control: фильтрует вывод пользовательского элемента управления.
  • Класс WP_Embed: предоставляет методы для вставки встроенного контента в посты и комментарии.
  • Класс WP_Widget: предоставляет базовую структуру для создания виджетов.
  • Класс WP_Customize_Control: предоставляет базовую структуру для создания настраиваемых элементов управления в пользовательской настройке.
Обсуждение