Функция the_excerpt() — полезная и популярная среди разработчиков тем для ворпдресс, но все-таки далека от идеала. Эта статья об улучшении функции, которое заключается в том, что цитата будет выводится строго определенной длины и не будет обрезать половину предложения.
Первое, что необходимо сделать, это создать функцию. Открываем файл functions.php в папке вашей текущей темы и вставляем следующий код:
// Переменные и умная длина цитаты.
function print_excerpt($length) { // Максимальная длина цитаты. Длина задается в символах
global $post;
$text = $post->post_excerpt;
if ( '' == $text ) {
$text = get_the_content('');
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
}
$text = strip_shortcodes($text); // опционально, рекомендуется
$text = strip_tags($text); // используйте' $text = strip_tags($text,'<p><a>'); ' если хотите оставить некоторые теги
$text = substr($text,0,$length);
$excerpt = reverse_strrchr($text, '.', 1);
if( $excerpt ) {
echo apply_filters('the_excerpt',$excerpt);
} else {
echo apply_filters('the_excerpt',$text);
}
}
function reverse_strrchr($haystack, $needle, $trail) {
return strrpos($haystack, $needle) ? substr($haystack, 0, strrpos($haystack, $needle) + $trail) : false;
}
Теперь можно использовать функцию print_excerpt() в файлах вашей темы, задавая длину цитаты; пример ниже:
<?php print_excerpt(50); ?>
