嫌长的直接看最后吧 -.-
首页、存档页显示文章摘要的好处很多,比如:
1,页面不会拉的很长,既美观,又有利于访客快速找到所需的文章
2,减少搜索引擎认为的重复内容
3,浏览者想看到全文就得点击进入单个文章页,因此增加了点击量 -.-
4,首页、存档页数据量少了,节约了流量和带宽,提高了页面打开速度
RSS 输出全文的好处只用讲一条:作为读者,我订阅feed的时候很讨厌那种只输出摘要的
但是,wordpress默认的是显示全文,不但第一页显示全文,点“下一页”,进入第二页、第三页、乃至无穷页,也都显示全文。那么如何解决这一问题呢?网上流传着很多方法:
一、在写日志时插入<!–more–>标签,这样在首页、存档页显示的就只是<!–more–>之前的内容。
这种做法缺点太明显:
1,rss输出也变成了只有<!–more–>之前的内容。实际上,这一缺点可以通过改代码、装插件等办法克服,但另一个缺点则无法克服:
2,如果你之前已经写了数百篇文章,难道还要一个个修改,重新加上<!–more–>标签吗?
二、修改主题的模板文件,在 index.php 里找到
<?php the_content(); ?>
改成
<?php
if (is_single() or is_page())
{the_content();}
else
{the_excerpt();}
?>
这样改的作用是加一个判断,如果是单篇日志页或静态页面,则输出全文,否则输出摘要。
看上去很美,但wordpress默认的摘要输出算法是根据西文来的,以空格判断字数,而中文里基本没空格,所以它算完了之后输出的“摘要”其实还是全文……因此,对中文博客而言,此法必须和其他办法协同使用。
三、写日志时自定义摘要。在写日志界面有一个“自定义摘要”字段,把自己想显示为摘要的话输入进去即可。
这种办法优点非常突出:不像其他办法都只能把文章开头的若干字显示为摘要,这种方法的摘要内容非常灵活,可完全自定义。
但缺点也很突出:和第一种办法一样,以前的文章都要一个个手工改,工程过于浩大。
四、修改 WordPress 自带的摘要函数
根据http://www.fwolf.com/blog/post/102(这篇文章网上转载很多,我个人判断认为这里是原始出处,可叹很多转载的在搜索引擎中排名倒更靠前)
修改wordpress的源文件,对一般用户来说恐怕有点难度,而且如果升级wordpress还得重新修改,维护不方便。不过最新发现原作者把它写成了一个插件,所以都放在下面插件里面一起讲吧。
五、使用插件,主要仍是修改wordpress自带的摘要函数。不过wordpres默认的情况是存档页(按分类、标签和时间存的档)用摘要输出,主页及主页上点进去的第二页、第三页等等用全文输出,因此即使用了插件,想要首页显示摘要的话,仍要用第二种方法修改一下主题的模板文件才行。
下面分析一下我知道的几个插件的算法:
1,Fwolf的 http://www.fwolf.com/blog/post/296
和wp自带的几乎一样,只不过把按空格判断改成了按段落判断,会输出文章的前三段作为摘要。因为是按段落输出,也不会出现中文乱码。
2,桑葚的中文工具箱 http://yanfeng.org/blog/wordpress/kit/
用substr()函数截取前256个字节,再用utf8_trim()函数处理,保证中文不会出现乱码。
3,Yskin的 http://yskin.net/2006/07/mulberrykit.html
我原来推荐过这个,觉得很完美,但后来觉得我个人还是有些定制化的要求,决定自己动手改一改,因此才有了这篇文章 -.-
Yskin的是段落和字数混合判断,先根据回车把文章分割成n段,然后用mb_strlen()判断字数,如果没超过规定的字数,就再输出一段。因此他的最小输出单位仍然是段落。
以上所有方法都有一个共同特点:输出的摘要是没有格式的,只有纯文本,原来的颜色、字体、超链接、图片等等都被过滤掉了。而我个人其实希望能够保留格式。
另外,按段落输出的话,有的段落长,有的段落短,那么输出的摘要就不是很整齐(其实苛求这个整齐对一般的blog也没什么意义,不过如果是cms或杂志风格的主题,对排版可能有一定需求,另外就是我个人的偏好 -.-)。
最理想的情况是根据显示的行数判断,就像古龙的小说一样,按行数算钱,不管这行是只有一个字,还是写满了,这样输出的文字块大小一定是整齐的。但网页不像书本,宽度不固定,无法预知每行写满了应该是多少字,而且如果保留图片的话,那么图片应该占多少行也很难判断,所以根据行数判断暂时不可行。
退而求其次的办法是根据字数判断。每个摘要虽然“占地面积”可能不一样,但字数是一样的,也还算整齐。不过中文工具箱的办法有点麻烦,其实有个mb_substr()函数就完全可以达成这一任务,截取指定数量的前若干个汉字,绝不会出现乱码。
不过mb_substr()函数也有个问题,它是根据字符数截取,如果文章里面夹杂了英文,比如wordpress这一个词就是9个字符了,它比九个汉字的占地面积要小的多,那么夹杂英文的摘要就会显得比全汉字的摘要短(这个都考究,我觉得我是有点bt了 -.-)。解决办法是用mb_strcut()函数,它和mb_substr()函数基本一样,只是是根据字节数截断的,在utf-8里,一个汉字大概占三个字节,一个英文字母占一个字节,这样截出来的汉字文本就会短一些,和英文的长短比较一致。同样,mb_strcut()函数也不会出现乱码。
mb_substr()和mb_strcut()函数共同的问题是,它们是按字符截取的,对英文来说就是按字母截取的,因此有可能把一个单词从中间截断……
另一个问题是mb_substr()和mb_strcut()属于mbstring扩展库,有的空间不支持。对于这种空间商,写信去要求他安装吧,付了钱的就得理直气壮提要求。要求无效的,真得考虑一下这种基本要求都不能满足的空间的质量了。
我写了一个插件,基本仿照Yskin的,不过截取用的是mb_strcut()。并为不支持mb_strcut()的空间自定义了一个函数,抄自网上的mb_substr()函数替代脚本,没找到mb_strcut()的替代脚本,汗。此外还有以下特点:
1,输出的摘要保留原来文章的格式。
2,做了一个判断,如果是存档页(分类存档、每月存档等),输出的摘要较短;如果是首页,输出的摘要较长。
3,如果本来的文章长于摘要,那么最后会显示[……],省略号指向全文的链接。去掉了Yskin原来的统计字数,因为我个人不喜欢;当然要加上也很容易。
更新:
Advanced Excerpt 是另一个很好的 WordPress 摘要插件,但需要略加改动才适合中文,对它的介绍和修改方法请看保留 html 标签的 wordpress 摘要插件一文。
总结:
为了完美地实现在 wordpress 博客首页、存档页显示摘要,RSS 输出全文,请根据自己的需求下载上述摘要插件中的一个,或下载我写的摘要插件。开启插件之后,如果发现你的首页仍然是全文,那说明你的主题不支持,请根据上面的第二条办法修改主题文件。
本文作者:Betty | 本文地址: https://myfairland.net/wordpress-excerpt/
本站文章除特殊标明者外均为原创,版权所有,如需转载,请以超链接形式注明作者和原始出处及本声明
承蒙关照,谢谢。
如果有时间的话,何不把此插件放到wp官网上呢?
至于是否带原始格式、输出多长的摘要以及省略号问题,
也可以用配置来实现嘛。
客气^^
想过再写一个配置页,不过那样比较麻烦,得等有时间再弄,等弄好了可能会放到官网上 :)
这个好!一定要支持一下
glegoo.net的最新博客文章更新wordpress出现的问题
怎么我的最新文章会到上面了!!???
那是一个叫commentluv的插件^^
要不怎么说“填了可能有惊喜”呢 :)
嘿嘿,发现Betty也是个爱折腾的人~哈哈。
Donald的最新博客文章ausen,aunsen,还是…
我说我怎么没看见什么惊喜呢,
原来自己已经很久没动手了,唉。。。
超级爱折腾啊 ^^
我好像来过你的博客了。不过既然来了。给你留点东西吧 (*^__^*) 嘻嘻……
谢谢你,网友……
Betty的最新博客文章几款批量修改文章分类、标签的wordpress插件比较
学习了~~
[…] 我曾写过wordpress博客首页、存档页显示摘要,rss输出全文的完美解决方案总结一文,总结了首页、存档页显示摘要,feed rss 仍输出全文的办法,其中提到我比较了几种插件的算法,自己写了一个插件,而我的插件的主要特点就是能够在摘要中保留原文的字体、颜色、链接、图片等html标签。然而试用之后发现,单纯地保留标签可能会导致意想不到的结果,如果按字数截取时正好截取到某个标签的中间,造成标签没有闭合,后面的显示就会错乱。 […]
博主讲得很详细,但是我怎么用mb_substr()和mb_strcut()都一样,出现中英文长短不一样的问题?
@amos:
那你试试mb_strimwidth(),这是根据宽度截取的,可能显示起来更整齐些~
[…] 如果发现没有效果,说明你的主题不支持,请按此方法修改主题文件。 […]
Betty好,有个问题想请教一下:
如果本来的文章长于摘要,那么最后会显示[……],省略号指向全文的链接.
现在的插件[……]没有链接,这个链接该如何加上?
@stone:
不好意思,我之前觉得这个链接没用就去掉了……
现在看来似乎还是有不少人觉得有用的,所以重新加上了,更新一下插件即可 :)
呵呵,感谢.另外还想请教一下,本页面中的代码框用的是什么插件?
@stone:
客气
代码没用插件,所以都不会分颜色高亮呀 :)
更新了插件,怎么链接都是无效的?
@stone:
我这试的有效啊……呀,你是不是没开启永久链接?
@stone:
抱歉之前造成的困扰,现在链接已经修复,请重新更新下
多谢你的反馈 :)
现在已经没有问题了,感谢Betty的及时更新!
提个建议:现在的继续阅读的链接是在没有添加摘要的情况下才出来,如果是在编写日志时有添加摘要项的内容,则不会出继续阅读的链接,是否可以将另外一种情况的链接也添加进来?
@stone:
呃……这个我原先没想到,现在改了,再更新一下插件吧~
有人提意见真好,毕竟一个人想不了那么全面 :)
已更新,用起来感觉不错!
@stone:
多谢你的意见, 我会继续改进的 :)
[…] 转自:http://myfairland.net/wordpress-excerpt/ […]
你好,按你的方法,我首页可以了,但是分类页面还是全文显示的,而且分类页显示不正常来着, 最前面字体都挤在一起,说什么ARCHIVE FOR THE CATEGORY !请问怎么使分类页面显示的和首页一样呢,谢谢!
@gun520rose:
ARCHIVE FOR THE CATEGORY 这个很明显是你的主题设定的,要么换一个主题,要么自己改主题…最简单的办法是把主题目录下面的archive.php删掉,这样分类页面就和首页形式一样了
[…] 如果发现没有效果,说明你的主题不支持,请按此方法修改主题文件。 « wordpress静态插件:cos-html-cache […]
按照你说的做了,但收益侧栏错位了!
好像就是替换模板index.php后的原因!
@vicsai:
我这个东东本身是不会影响侧栏的~估计是你改动模板的时候不小心动了其他什么东西?
好用 谢谢你
你真是跟我一样爱折腾一样BT的人,可以联系我吗?amos.koo@qq.com,因为找不到您的联系方式。有问题请教,留言很难说清楚。谢谢!
在研究..留言支持下
[…] WordPress 博客首页、存档页显示摘要,RSS 输出全文的完美解决方案总结 […]
555555555 我下载了个国外主题
按你的方法修改都不行啦 其他主题都可以 就那个不可以
郁闷
@VOKZ:
具体是什么样的错误呢?
[…] Excerpt这个插件很好,安装启用后没有任何反应,首页还是显示全文。这篇文章的作者根据Advanced […]
[…] 如果发现没有效果,说明你的主题不支持,请按此方法修改主题文件。 […]
我的www.yule34.cn怎么不行,是不是主题的问题
@yule34:
多半是
具体怎么改呢,谢谢了
我的网站用的是官方2.8版默认的模板
@yule34:
文中已经说了啊……请仔细看看
[…] 或者可以通过插件来实现,该插件的好处是在撰写日志里不添加摘要的情况下,自动摘取部分内容做为摘要显示,同时输出的摘要不是纯文本,原来的颜色、字体、超链接、图片等等都能够被显示出来,详情见http://myfairland.net/wordpress-excerpt/,有很详细地介绍。 […]
我是新手,我的是MM图片网站`可是你说的我不是很懂啊“我试着在主题编辑但是没办法按确定之类的东西“搞死我了..崩溃;“我想知道如何用摘要啊.弄不了..所有的图片都是显示的`还大小不一“`
可以帮忙吗~??
@xinshou:
我也不懂你在说什么…
我想弄这个WordPress摘要输出方法。。。为什么老是弄不了“在后台、主题那编辑也不知道如何,可以帮忙吗谢谢
[…] Betty全面总结了几种中文摘要方式,形成了一个综合的适合中文的摘要插件,并且提交到了WordPress 官网,带有简单的配置后台,很不错。 […]