Вы хотите иметь последнее вхождение needle
или все вхождения?
// dont use the buffering, there is also a get_the_excerpt function
$excerpt = get_the_excerpt();
$needle = '.';
// use strrpos to get the last occurrence or strpos to get the first
$needle_pos = strrpos(substr($excerpt,0,100), $needle);
if($needle_pos !== false) {
// we have a needle, so lets change the excerpt
$excerpt = substr($excerpt, 0, $needle_pos);
}
echo substr($excerpt, 0, 100) . '..'; // when its already cut it is less then 100 chars
Или, что еще лучше, вы могли бы изучить использование фильтров. Фильтр - это что-то из Wordpress. Повсюду в коде Wordpress есть вызовы функций на apply_filters([somename], $somevariable)
. Он выполнит все функции, связанные с этим тегом [somename]
, предоставив $somevariable
и сохранив там возвращаемое значение. Вы можете добавлять свои собственные фильтры, используя add_filter([somename], [some callback])
. Например:
add_filter('the_excerpt', cutoffExcerpt);
function cutoffExcerpt($excerpt) {
$needle = '.';
// use strrpos to get the last occurrence or strpos to get the first
$needle_pos = strrpos(substr($excerpt,0,100), $needle);
if($needle_pos !== false) {
// we have a needle, so lets change the excerpt
$excerpt = substr($excerpt, 0, $needle_pos);
}
return substr($excerpt, 0, 100) . '..'; // when its already cut it is less then 100 chars
}
Вы должны добавить это в свой файл functions. php в своей теме (или создать этот файл, если у вас его еще нет). Теперь, когда вы используете the_excerpt()
в своем шаблоне, он будет отрезан на игле без лишних хлопот.