Ответ 1
Функция mb_strimwidth выполняет именно это.
echo mb_strimwidth($title, 0, 50, '...');
У меня есть сайт wordpress с заголовками, и если заголовок имеет более 50 символов, мне нужно добавить эллипсис (...) в конце заголовка и остановить заголовок на 50 символов. Ниже представлен PHP, который я пишу, но, похоже, он не работает правильно, ища PHP-гуру, чтобы научить меня правильному пути для этого. Любая помощь будет принята с благодарностью.
<?php if (strlen("the_title()") > 50) { ?>
<?php the_title(); ?>
<?php } if (strlen("the_title()") < 50) { ?>
<?php echo substr(get_the_title(), 0, 50); ?>...
<?php } ?>
Функция mb_strimwidth выполняет именно это.
echo mb_strimwidth($title, 0, 50, '...');
Добавьте это в свой файл "functions.php" в папку темы...
function the_title_excerpt($before = '', $after = '', $echo = true, $length = false)
{
$title = get_the_title();
if ( $length && is_numeric($length) ) {
$title = substr( $title, 0, $length );
}
if ( strlen($title)> 0 ) {
$title = apply_filters('the_title_excerpt', $before . $title . $after, $before, $after);
if ( $echo )
echo $title;
else
return $title;
}
}
затем вызовите заголовок, как показано ниже.
<?php the_title_excerpt('', '...', true, '50'); ?>
Единый код, 100% работающий
PHP-функция mb_strimwidth() | Функция Wordpress get_the_title()
<?php
echo mb_strimwidth( get_the_title(), 0, 100, '...' );
?>
Вы проверяете длину строки "the_title()"
. Удалите кавычки, и это, вероятно, будет работать (я не уверен на 100% разницы между the_title() и get_the_title(), поскольку я не использовал Wordpress через некоторое время - вам тоже придется переключать это тоже)
<?php if (strlen(the_title()) > 50) { ?>
<?php the_title(); ?>
<?php } if (strlen(the_title()) < 50) { ?>
<?php echo substr(get_the_title(), 0, 50); ?>...
<?php } ?>
или, возможно,
<?php if (strlen(get_the_title()) > 50) { ?>
<?php the_title(); ?>
<?php } if (strlen(get_the_title()) < 50) { ?>
<?php echo substr(get_the_title(), 0, 50); ?>...
<?php } ?>
<?php
$title = the_title('','',false);
if(strlen($title) > 60):
echo trim(substr($title, 0, 65)).'...';
else:
echo $title;
endif;
?>
Возьмите the_title()
вне кавычек при использовании функции strlen()
.
echo (strlen(the_title())>50) ? (substr(the_title(), 0, 50) . "...") : the_title());
Это тернарный оператор. В основном это говорит о том, что результат от the_title()
составляет более 50 символов, затем эхо первых 50 символов, а затем строки ...
. В противном случае просто выделите результат из the_title()
.
Вы можете узнать больше о substr
здесь: http://php.net/manual/en/function.substr.php
Информацию о тернарном операторе можно найти здесь: http://php.net/manual/en/language.operators.comparison.php
WordPress имеет встроенную функцию "wp_trim_words()"
, чтобы обрезать предложения на основе количества слов, которые вы предоставляете,
https://codex.wordpress.org/Function_Reference/wp_trim_words
чтобы обрезать заголовок более 5 слов, вы можете сделать это
<?php
$title = get_the_title();
$short_title = wp_trim_words( $title, 5, '...' );
echo '<h3>'.$short_title.'</h3>';
?>