Как установить ограничение персонажа на 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) )
?>
Ответ 8
Замените <?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