Rupaka
@Rupaka
Изучаю html уже 7 лет

WP post_content лимит по количеству символов, как реализовать?

Вот функция которая выводит последние посты, теперь мне нужно сделать что бы контент поста который она выводит был лимитирован в 130 символов. (если возможно то что бы +- 130 символов но что бы не срезало последнее слово)
$Last_posts = array(
	'numberposts' => 3,
	'post_status' => 'publish',
	'post_type' => 'post',
	'orderby' => 'post_date',
	'order' => 'DESC',
	'post_content' => '',
	); 

$result = wp_get_recent_posts($Last_posts);

foreach( $result as $p ){ 
		$d = "Y/m/d";
		$pd = get_the_date( $d, $p['ID'] );
		echo '<a href="'. get_permalink($p['ID']).'">' . $thumbnail. $p['post_title'].$p['post_content'].$pd.'<span class="owl-post-readmore">Подробнее <i class="flaticon-next"></i></span>'. '</a></br>';
	}

Пробовал вывести написав такую строку, ничего не вышло(даже контент не вывело)
$post_short_txt = mb_substr( strip_tags( $p->post_content ), 0, 130 );

Как я могу это реализовать или какой функцией хотя бы?
  • Вопрос задан
  • 1908 просмотров
Решения вопроса 1
Rupaka
@Rupaka Автор вопроса
Изучаю html уже 7 лет
$trimmed_content = mb_strimwidth( $p['post_content'],0, 130, "..." );
 //Ограничение в 130 символов
//Значение 0 отвечает за количество срезаных символов с начала фразы

С помощью данного условия я смог обрезать фразу по 130 символам и добавить ... в конце
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@scorpion11133
functions.php
function the_truncated_post($symbol_amount) {
	$filtered = strip_tags( preg_replace('@<style[^>]*?>.*?</style>@si', '', preg_replace('@<script[^>]*?>.*?</script>@si', '', apply_filters('the_content', get_the_content()))) );
	echo substr($filtered, 0, strrpos(substr($filtered, 0, $symbol_amount), ' ')) . '...';
}


в нужном месте
the_truncated_post( 100 );

источник: https://misha.blog/wordpress/anons-posta.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы