Как установить ограничение персонажа на the_content() и the_excerpt() в wordpress

Как установить лимит символов для the_content() и the_excerpt() в wordpress? Я только нашел решения для ограничения слова - я хочу, чтобы можно было установить точные цифры количества выведенных.

Ответы

Ответ 1

Вы можете использовать функцию обратного вызова фильтра Wordpress. В своем каталоге темы создайте файл с именем functions.php и добавьте следующее в:

<?php   
  add_filter("the_content", "plugin_myContentFilter");

  function plugin_myContentFilter($content)
  {
    // Take the existing content and return a subset of it
    return substr($content, 0, 300);
  }
?>

Функция plugin_myContentFilter() будет вызываться каждый раз, когда вы запрашиваете содержимое сообщения/страницы через the_content() - он предоставляет вам контент в качестве ввода и будет использовать все, что вы возвращаете из функции для последующего вывода или другие функции фильтра.

Вы также можете сделать то же самое для the_exercpt() - add_filter(), а затем функцию, которая будет использоваться в качестве обратного вызова.

Подробнее см. справочные документы для фильтра Wordpress.

Ответ 2

Или даже проще и без необходимости создавать фильтр: используйте PHP mb_strimwidth, чтобы усечь строку до определенной ширины (длины). Просто убедитесь, что вы используете один из синтаксисов get_. Например, с содержимым:

<?php $content = get_the_content(); echo mb_strimwidth($content, 0, 400, '...');?>

Это сократит строку до 400 символов и закроет ее с помощью .... Просто добавьте "read more" -link в конец, указав на постоянную ссылку с помощью get_permalink().

<a href="<?php the_permalink() ?>">Read more </a>

Конечно, вы также можете построить read more в первой строке. Затем просто замените '...' на '<a href="' . get_permalink() . '">[Read more]</a>'

Ответ 3

Это также балансирует теги HTML, чтобы они не оставались открытыми и не прерывали слова.

add_filter("the_content", "break_text");
function break_text($text){
    $length = 500;
    if(strlen($text)<$length+10) return $text;//don't cut if too short

    $break_pos = strpos($text, ' ', $length);//find next space after desired length
    $visible = substr($text, 0, $break_pos);
    return balanceTags($visible) . " […]";
} 

Ответ 4

Для использования функций the_content() (для отображения основного содержимого страницы)

$content = get_the_content();

echo substr($content, 0, 100);

Для использования функций the_excerpt() (для отображения краткого содержимого фрагмента страницы)

$excerpt= get_the_excerpt();

echo substr($excerpt, 0, 100);

Ответ 5

wp_trim_words Эта функция обрезает текст до определенного количества слов и возвращает обрезанный текст.

Пример: -

echo wp_trim_words( get_the_content(), 40, '...' );

Ответ 6

просто для того, чтобы помочь, если кто-то хочет ограничить длину сообщения в home page.. тогда можно использовать ниже код для этого.

приведенный ниже код является просто модификацией @bfred.it Sir

add_filter("the_content", "break_text");

function limit_text($text){

  if(is_front_page())
  {
    $length = 250;
    if(strlen($text)<$length+10) return $text; //don't cut if too short
    $break_pos = strpos($text, ' ', $length); //find next space after desired length
    $visible = substr($text, 0, $break_pos);
    return balanceTags($visible) . "... <a href='".get_permalink()."'>read more</a>";
  }else{
    return $text;
  }

}

Ответ 7

<?php 
echo apply_filters( 'woocommerce_short_description', substr($post->post_excerpt, 0, 500) ) 
?>