I am trying to learn how to shorten a title only if it is over 8 characters long. If it is longer than 8 characters, then echo the first 8 characters and put an ellipse after it.
Here is how I am getting the title:
<?php echo $post->post_title ?>
Any help would be greatly appreciated. This will be a great learning lesson for me so I can replicate this in the future, so again any help would be amazing.
<?php
if (strlen($post->post_title) > 8)
echo substr($post->post_title, 0, 8) . ' ...';
else
echo $post->post_title;
?>
Alternatively, if You have the mbstring
extension is enabled, there's also a shorter way as suggested by Gordon's answer. If the post's encoding is multibyte, You'd need to use mbstring
anyway, otherwise characters are counted incorrectly.
echo mb_strimwidth($post->title, 0, 8, ' ...');
You can use mb_strimwidth
echo mb_strimwidth('Your Title', 0, 8, '…');
If you want to truncate with respect to word boundaries, see
You should do this in plugin because if you change the theme the changes will be lost
you can try this.
$maxlength = 8;
if (strlen($post->post_title) > $maxlength)
echo substr($post->post_title, 0, $maxlength) . ' ...';
else
echo $post->post_title;
So by now you no need to change max char in all the line of code.
Thanks.