目前,Wordpress CMS(杂志)主题盛行,CMS主题有一个共有的特性就是,首页只显示文章部分内容,也就是俗称的文字截断,这个与真正的WP摘要功能无关,只是控制文章字数显示在首页,真正的WP摘要需要主题的支持,两者不能混为一谈.
那么显示文章部分内容有什么好处呢,那就是既可以增加首页的信息量,方便浏览者快速找到想看的内容,又不会把首页拉的很长,整齐美观,还有什么...想起来再说.
实现文字截断的方法很多,比如:在编辑文章时在适当位置加入more标签、安装启用中文工具箱等,特别是一些国外主题会加入特殊的函数实现文字截断,但中文字符与英文字符的算法不同,对中文的截断不是很理想。这里为大家推荐适合中文截断的方法,这些方法已应用在我制作的热点新闻主题中。
文章截断:
- <?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 200,"..."); ?>
用上面的代码替换当前主题archive.php、index.php模板文件中类似:
- <?php the_content('Read more...'); ?>
或
- <?php the_excerpt(); ?>
其中数字200是字数,可以适当调整,但最好保持为偶数.
文章标题截断:
很多CMS主题是以分类文章列表形式展示的,但当某个文章标题太长,就会造成回行,很不美观,必须要将多余的文字去掉,比较简单也比较笨拙方法是用CSS截断,可惜当文章标题同时有汉字和英文时问题就明显了,经常是一个字只截断了一半,看上去很古怪。还是定义PHP函数实现标题截断比较合理也非常容易。
下面的标题截断函数与文章截断函数同出一辙:
- <?php echo mb_strimwidth(get_the_title(), 0, 24, ''); ?>
不过当中文与英文同时存在于标题中时,还是会造成截断不准确,这个问题在文章截断中并不是很明显。
最理想的标题截断方法:
首先将下面的代码添加到主题functions.php模板文件中
- //文字截断
- function cut_str($src_str,$cut_length)
- {
- $return_str='';
- $i=0;
- $n=0;
- $str_length=strlen($src_str);
- while (($n<$cut_length) && ($i<=$str_length))
- {
- $tmp_str=substr($src_str,$i,1);
- $ascnum=ord($tmp_str);
- if ($ascnum>=224)
- {
- $return_str=$return_str.substr($src_str,$i,3);
- $i=$i+3;
- $n=$n+2;
- }
- elseif ($ascnum>=192)
- {
- $return_str=$return_str.substr($src_str,$i,2);
- $i=$i+2;
- $n=$n+2;
- }
- elseif ($ascnum>=65 && $ascnum<=90)
- {
- $return_str=$return_str.substr($src_str,$i,1);
- $i=$i+1;
- $n=$n+2;
- }
- else
- {
- $return_str=$return_str.substr($src_str,$i,1);
- $i=$i+1;
- $n=$n+1;
- }
- }
- if ($i<$str_length)
- {
- $return_str = $return_str . '';
- }
- if (get_post_status() == 'private')
- {
- $return_str = $return_str . '(private)';
- }
- return $return_str;
- }
再用下面的代码
- <?php echo cut_str($post->post_title,32); ?>
替换主题模板中的
- <?php the_title(); ?>
其中:调整数字32可以控制标题的长度.
以上函数代码全部来自网络,原作者未知,有认领者请留言!















我刚刚开始学习WordPress,正在个人的机子上实验博客,我下载了你的主题,很漂亮,我用的是最新的3.0.1版本,直接安装好像报错,解压后放到主题文件夹后可以正常使用,个人喜欢苹果的这种圆角设计风格,有个小小的建议,就是版主完全可以设计一个图标取代导航条上的苹果图标,不知版主有何看法。本人刚刚入门,对于PHP等虽有热情但却了解甚少,还有什么CSS,希望版主在闲暇之余可以给予一点指教。谢谢!
其它项目都已经正常,就是主页上文章的内容出不来,都是空的,是哪里不对吗
中文文章自动截断这个功能不错,以前写文章老是忘记加入more标签,搞得首页拉的很长。收藏了,呵呵
一直使用mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 300,""); 的方式,有空试试第2种,多谢分享
强大,学习了
好文章,顶。
发现现在用这款主题的也比较多哦
很好很强大
测试1
测试2
测试3
测试
十分强大
鸟哥开新站点了?
到底有多少嵌套哪???嘻嘻
我也来看看到底有多少层!
test
test
9了啊啊,呵呵
没有必要
很是需要的功能啊。
我也是非插件者。。。。能不要的都不要。
插件多了类啊
apply_filters有时候会把标签一起截断,导致模板显示变形,请问博主遇见过这个问题吗?可知道怎么解决。
刚刚试过了,很好用!
根据主题来吧,有的不需要用
我一般在发布的时候,在原文里,不会复制很长的内容粘贴到摘要里,一般情况下,这个方法我感觉还是比较管用的哦。
这个我在其它主题上试过很好用。
不用插件就可以搞定
还是用插件简单点
这个我正要用呢,感谢!
有用的代码,收藏之~
非常强大...
文章很好,站长人品也很好。
这个函数不是我写的。
为什么使用这个函数,不能排除密码保护的文章呢?
我作的主题可以不显示密码的内容
那怎么能在别人做的主题下,也能不显示密码的内容?
通常加more就好了呗
刚接触,真的很蒙。哎学习中。
这个增加多少次查询了啊- -...
每次来都有不一样的体验!
有这个必要吗?
临床试验一下。带走了
不错,慢慢折腾去
学习了 谢谢
不错呀!
能使摘要按照原文样式体现出分段的效果吗
可以手动添加摘要
不过需要主题功能支持,比如我的HotNews Pro
本人不想用手动的,用着麻烦。现在一直用着WP-UTF8-Excerpt插件,求能代替这个插件的代码,实现这个插件一样的功能,具体样式,看老徐博客首页。
问题解决了,谢谢了
表示飘过