[转]Wordpress首页显示摘要终极解决方案
注:关于摘要,后来我还找到一个更加好的方法,请访问Shawn的博客:Wordpress 最简单的首页文章截断输出方式。
本文转载自这里。
很多Wordpress主题默认在首页显示所有文章内容,这显示是个不好的方式。一是会造成首页太长,“盖楼”太高,二是会造成首页的内容与文章页面的内容重复,不利于SEO。所以一般的blog都只在首页显示摘要。
51美刀在刚开始就遇到了这个难题,搜索一番之后,发现网上已经提供了不少解决方案,但是似乎没有一个奏效的。究其原因,就是那些解决方案还是利用 wordpress本身提供的函数如the_excerpt()或者more标签之类,要不就是找国外的插件,如 ”the_excerpt_reloaded”这个插件。试用之后,发现都无法解决问题。其根本原因,就是国外的插件都是采用空格计算单词的个数,然后从正文中摘取若干个词作为摘要,但是中文都不是靠空格来分词的,所以对中文博客这种方法肯定没用。
笔者在研究the_excerpt_reloaded这个小插件的基础上,修改了其中的部分代码,使之能适合中文博客的需要,并命名为 yet_another_excerpt。其实这个问题通过hack Wordpress的代码也可以解决,之所以采用插件的形式,是因为插件具有更多的灵活性,比如可以方便将来Wordpress系统的升级。
Plugin Name: yet another excerpt
Plugin URI: http://www.51meidao.com/2008/08/yet-another-excerpt/
Description: 基于the_excerpt_reloaded插件,修正了不能正确处理中文的问题。
Version: 0.1
Author: 51meidao.com
Author URI: http://www.51meidao.com
适用Wordpress的版本
目前51meidao.com使用的是最新的2.6版,只要你的wp版本不是太旧(v1.5以上),应该都没问题。(如果你的wp那么旧,证明你肯定已解决这个问题了。)
对后台系统的要求
要求php启用了mbstring模块。可使用phpinfo()查看是否启用了mbstring模块。方法为写个如下的php页面:
<?php
phpinfo();
?>
保存在服务器上,访问之,就会出现php的相关信息。在其中搜索“mbstring”字符串,如果能找到一般就是启用了。
安装方法
直接将yet-another-excerpt.zip解压到plugin目录。然后在wordpress管理页面中启用即可。
使用方法
在你所使用的主题里面,找到index.php文件,找到显示主页内容的地方,一般会有the_content()这个函数,将其改为wp_yet_another_excerpt()就可以了。这里会使用插件默认的参数显示摘要。
如果你要实现个性化的摘要,也可以按照下面的说明,调用yet_another_excerpt()函数:
yet_another_excerpt(
$excerpt_length,
$encoding,
$allowedtags,
$use_more_link,
$more_link_text,
$more_link_title,
$showdots)
各个参数的含义是:
$excerpt_length: 摘要的长度。当然这个不是绝对准确,因为可能包含一些HTML的tag。
$encoding:网页的编码,一般是”UTF-8″。
$allowedtag:允许使用的HTML tag。
$use_more_link:增加一个类似51meidao.com首页每个摘要后面显示的”阅读全文”的链接。
$more_link_text:链接显示的文本内容。
$more_link_title:光标悬浮在链接上时,浏览器显示的文本。
$showdots:是否在摘要的末尾显示3个点号,即”…”。
本站调用上述函数的语句是这样的:
yet_another_excerpt(120, ‘UTF-8′, ‘<p><a><ul><ol><li><img><br /><blockquote><em><strong><h1><h2><h3>’, 1, ‘[阅读全文]‘, ‘阅读全文’, 1);
点击下载yet_another_excerpt插件。

十月 15th, 2008 at 16:40
现在连摘要输出都噶深奥的啊…-.-
我觉得添加themore标签还是很方便的么…
十月 16th, 2008 at 01:23
这种解决方案不是很完美,英文多的时候截出来长短不一。
十月 16th, 2008 at 01:57
To Shawn:
就我目前的Wordpress水平,只知道摘要是用excerpt来做,这个函数会先检查你的文章有没有设置摘要字段,如果有,输出摘要字段,如果没有,输出正文的55个单词(注意,是单词,通过空格来判断)。
但这篇文章提供的插件,就简单地只按字符来判断了,但这又造成了一个问题,那就是如果我文章一开始放图片的话,很可能源代码字符很多,于是基本上是没有摘要了(图片在摘要里是过滤了的)。
所以现在,我没有使用这篇文章介绍的插件,采用了笨办法,那就是,给每个帖子设置摘要字段:(((
十月 16th, 2008 at 02:29
不知道你是否熟悉 php,熟悉的话可以结合 mb substr ; strip tags 达到你的要求。你这里过滤好像挺严重的,没必要用这个 wyswyg 编辑器,多个 js 不说,还过滤所有代码。
十月 16th, 2008 at 03:36
测试下邮件回复功能。
十月 16th, 2008 at 03:46
@Shawn 邮件功能做好了,多谢哈,不过我的邮件好像发不到gmail上去:(。还有,你说的过滤是什么意思?
十月 16th, 2008 at 04:34
@Yacca
我以前没做过Wordpress的编程。这个模板拿来的时候使用的是excerpt,但好像它按空格来计算单词数,而我们的汉字没有空格,所以有问题啊,不知道Wordpress以后会不会改进这个东西。
十月 16th, 2008 at 13:15
我在这里,写任何 php 函数名,结果就是整条留言发送失败。还有你收不到邮件也和你用的这个评论编辑器有关。
十月 16th, 2008 at 14:50
@Shawn
邮件能收到,你说的过滤我检查过了,比如:
这个代码,写好后,选择上,然后点击编辑器上的代码样式按钮,就可以生成代码格式了。.不过还是有问题,下划线就显示错误:(
十月 16th, 2008 at 15:55
但是,你回复给我的消息,我没有收到邮件。。。
这个编辑器也太不符合一般人的习惯了,好看倒是挺好看。
十月 16th, 2008 at 15:58
@Shawn
唉,wordpress的微调还是很麻烦啊,看来还得慢慢调整。细节需要时间~~
十月 18th, 2008 at 17:52
有个”中文wordpress工具箱”, 好像能出来摘要输出乱码的功能, 不知道是不是和你这个做一样的事情 ;)
十月 18th, 2008 at 17:54
@i.robot
本来准备优化下feed,正好搜索到一个wordpress工具箱,还在研究,你就提到了,呵呵。
十月 25th, 2008 at 20:05
Write quite good.Give you to encourage, next time again come to your crest once(*__*)
十月 27th, 2008 at 02:30
网站不错哦。给你踩一下吧。有空也到我网站上留个脚印啊。大家互动一下,带动一下人气。(*^__^*) 嘻嘻……
下次在来了。。88
十一月 3rd, 2008 at 17:44
@网络是毒药 刚才整理垃圾回复才发现你的回复被误判为垃圾了,晕,改过来了:)去你空间看看。
十一月 13th, 2008 at 17:02
^_^欢迎访问我的小站。小说搜索的小站
十一月 16th, 2008 at 05:31
天天网上游!看文章.发留言-累啊。看完了给你留个脚印。顺便也留下我网站的链接。(*^__^*) 嘻嘻……没办法这年头做网站很难啊