Как установить ограничение на количество символов для the_content () и the_excerpt () в WordPress - PullRequest
20 голосов
/ 30 июня 2010

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

Ответы [ 9 ]

28 голосов
/ 30 июня 2010

Вы можете использовать функцию обратного вызова фильтра 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 для получения более подробной информации.

25 голосов
/ 27 мая 2014

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

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

Это обрежет строку из 400 символов и закроет ее с помощью .... Просто добавьте ссылку «читать дальше» в конец, указав на постоянную ссылку с помощью get_permalink().

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

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

17 голосов
/ 16 апреля 2012

Это также балансирует 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) . " […]";
} 
10 голосов
/ 29 июля 2017

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

Пример: -

echo wp_trim_words( get_the_content(), 40, '...' );
3 голосов
/ 30 декабря 2015

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

$content = get_the_content();

echo substr($content, 0, 100);

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

$excerpt= get_the_excerpt();

echo substr($excerpt, 0, 100);
2 голосов
/ 10 апреля 2017

Заменить <?php the_content();?> на код ниже

<?php
$char_limit = 100; //character limit
$content = $post->post_content; //contents saved in a variable
echo substr(strip_tags($content), 0, $char_limit);
?>

php substr () функция refrence

php strip_tags () функция refrence

0 голосов
/ 03 июля 2018

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

$excerpt = wp_trim_words( get_the_content(), 40, '<a href="'.get_the_permalink().'">More Link</a>');

Получить усеченную строку с указанной шириной , используяmb_strimwidth() функция php.

$excerpt = mb_strimwidth( strip_tags(get_the_content()), 0, 100, '...' );

Использование add_filter() метода WordPress на the_content ловушке фильтра.

add_filter( "the_content", "limit_content_chr" );
function limit_content_chr( $content ){
    if ( 'post' == get_post_type() ) {
        return mb_strimwidth( strip_tags($content), 0, 100, '...' );
    } else {
        return $content;
    }
}

Использование пользовательской функции php для ограничения содержимого символов.

function limit_content_chr( $content, $limit=100 ) {
    return mb_strimwidth( strip_tags($content), 0, $limit, '...' );
}

// using above function in template tags
echo limit_content_chr( get_the_content(), 50 );
0 голосов
/ 18 января 2017
<?php 
echo apply_filters( 'woocommerce_short_description', substr($post->post_excerpt, 0, 500) ) 
?>
0 голосов
/ 01 ноября 2014

только для того, чтобы помочь, если кто-то захочет ограничить длину сообщения на 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;
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...