更改WordPress自动生成摘要的方式

授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/102)的形式标明文章原始出处和作者信息及本声明。

WordPress在搜索或列Archives(按时间、按分类)的时候,在列表中是显示帖子摘要的。原来我觉得这样不好,就把列表中显示摘要改成了在列表中显示全部帖子,使用一段时间以后发现很不好。

首先列表会变得很臃肿,失去了列表的本身作用——方便用户寻找真正想要看的帖子,其次,在搜索引擎抓取页面的时候,把那些列表页面也抓了过去,但随着帖子的不断增多,列表的更新远快于搜索引擎缓存的更新,用户使用搜索引擎进来以后,在列表中就很难找到目标了。

这样在列表中只显示摘要的优势就体现出来了,首先页面很清爽,用户可以清楚的找到要查看的目标,然后搜索引擎抓取内容的时候,会更多的关注页面的Permalink,用户也就会通过搜索直达目标帖子,方便了用户。

打开WordPress的wp-includes\functions-formatting.php,找到其中的function wp_trim_excerpt(about line 741),将如下代码

$excerpt_length = 55;
$words = explode(’ ‘, $text, $excerpt_length + 1);
if (count($words) > $excerpt_length) {
array_pop($words);
array_push($words, ‘[...]‘);
$text = implode(’ ‘, $words);
}

更改为

$excerpt_length = 3;
$words = explode(”\n”, $text, $excerpt_length + 1);
if (count($words) > $excerpt_length) {
array_pop($words);
array_push($words, ‘<p />……<a href=”‘ . get_permalink($post->ID) . ‘”>[阅读全文]</a>’);
$text = implode(”\n”, $words);
}

就可以了,WordPress默认的生成摘要是用空格来判断的,就是取到55个空格结束,这适用于西方采用空格作为词间隔的语言,但中文是不分词的,所以我使用读取3行的方式,取前3行,对哪种语言都是适用的。

update @ 2007-02-09
升级到WordPress 2.1以后,这个修改的地点变为wp-includes/formatting.php,第780行左右。

update @ 2007-02-26
编写了一个插件,不用再手工修改代码了。

No tags for this post.

Related posts

10 Responses to “更改WordPress自动生成摘要的方式”

  1. hhalloyy Says:

    archive.php的页面显示post数目和admin里Reading Options设置的显示数目是一致的。

    我为了节省打开首页速度,便设置了4条,这样显示全部和摘要没多大差别。

    如果archive.php的显示post数目能自己定制,比如10条,这样我肯定会和你一样输出摘要了。

    [Reply]

  2. Fwolf Says:

    我这里所说的Archive主要是针对WordPress现实搜索结果或分类时候的,默认的摘要方式只适用于西文。

    首页还是不要显示太多帖子的好,不然以来首页很很长、很长,影响阅读,而来打开速度也慢。

    不知道你说的“post数目能自己定制”指什么,我这里Archive也是每页5条,和Reading里设置的一样。

    [Reply]

  3. Fwolf’s Blog » 升级WordPress从1.5到2.0 Says:

    [...] 还有修改一下生成摘要的方式,参见更改WordPress自动生成摘要的方式。 [...]

  4. MLChen Says:

    那請問一下,如果是要讓首頁也是以摘要輸出要改哪裡呢?
    我用的是 K2

    [Reply]

  5. MLChen Says:

    不好意思,那如果我想修改主頁面呢?因為首頁文章如此長實在試看的有點難受
    剛搬來 wordpress 有些地方都需要人家的幫助,感謝您。

    [Reply]

  6. Fwolf Says:

    我想你是不是可以在模板编辑中修改“Main Index Template”
    把显示全文的函数the_content()更改为显示摘要的函数the_excerpt() ?

    [Reply]

  7. 悠游大陆 » test7 Says:

    [...] 更改WordPress自动生成摘要的方式 [...]

  8. 飞龙 Says:

    我找到解决办法了。谢谢你的启发。

    [Reply]

  9. Betty » wordpress博客首页、存档页显示摘要,rss输出全文的完美解决方案总结 Says:

    [...] 四、修改wordpress自带的摘要函数 根据http://www.fwolf.com/blog/post/102(这篇文章网上转载很多,我个人判断认为这里是原始出处,可叹很多转载的在搜索引擎中排名倒更靠前) [...]

  10. Azheng’s blog » wordpress首页、存档页显示摘要,rss输出全文的完美解决方案总结 Says:

    [...] 四、修改wordpress自带的摘要函数 根据http://www.fwolf.com/blog/post/102(这篇文章网上转载很多,我个人判断认为这里是原始出处,可叹很多转载的在搜索引擎中排名倒更靠前) [...]

Leave a Reply

您的留言将被缓存和审阅,所以不会立即出现在这里,请别着急,着急的话可以给我发邮件 :-)
支持Markdown Extra语法,参见: [甲] [1] [2]