有利于SEO的排版样式应该是标题+摘要,摘要可以在写文章时自己添加,也可以通过插件实现,但是插件对中文支持度不够友好。本人推荐用wordpress自带的函数实现,轻量级且中英文支持良好。关于非插件文章截断,在以前的文章中也有介绍,今天重新整理并升级一下。
一,用mb_strimwidth() 函数
如果你的主机支持utf-8的话,这个函数是最佳的,调用代码为
<span><?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 150,"..."); ?></span>
说明一下:0,表示从文章开头开始截图;150,截取到第150个字符;...,摘要末尾的样式。你还可以给span指定样式。
二,用mb_substr() 函数
当你发现第一种方法无效时,可以用这一种
function z_substr($sourcestr='',$i=0,$cutlength=150,$endstr='...') { $str_length=strlen($sourcestr);//字符串的字节数 while (($n<$cutlength) and ($i<=$str_length)) { $temp_str=substr($sourcestr,$i,1); $ascnum=Ord($temp_str);//ascii码 if ($ascnum>=224) { $returnstr=$returnstr.substr($sourcestr,$i,3); $i=$i+3; $n++; }elseif ($ascnum>=192) { $returnstr=$returnstr.substr($sourcestr,$i,2); $i=$i+2; $n++; }else { $returnstr=$returnstr.substr($sourcestr,$i,1); $i=$i+1; $n=$n+0.5; } } if($i<$str_length)$returnstr.=$endstr; return $returnstr; }
将上面的代码放到functions.php 里,然后用下面的代码调用
<?php echo z_substr($sourcestr, $i, $cutlength, $endstr); ?>
最后将调用代码放到主题
<?php the_title(); ?>
的下面即可。
