[转]Wordpress首页显示摘要终极解决方案

十月 8th, 2008 by Soloman | Print [转]Wordpress首页显示摘要终极解决方案 | 953 views

注:关于摘要,后来我还找到一个更加好的方法,请访问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插件。

,

 

本文有18条评论

  1. Yacca 说: [回复]

    现在连摘要输出都噶深奥的啊…-.-

    我觉得添加themore标签还是很方便的么…

  2. Shawn 说: [回复]

    这种解决方案不是很完美,英文多的时候截出来长短不一。

  3. Soloman 说: [回复]

    To Shawn:

    就我目前的Wordpress水平,只知道摘要是用excerpt来做,这个函数会先检查你的文章有没有设置摘要字段,如果有,输出摘要字段,如果没有,输出正文的55个单词(注意,是单词,通过空格来判断)。

    但这篇文章提供的插件,就简单地只按字符来判断了,但这又造成了一个问题,那就是如果我文章一开始放图片的话,很可能源代码字符很多,于是基本上是没有摘要了(图片在摘要里是过滤了的)。

    所以现在,我没有使用这篇文章介绍的插件,采用了笨办法,那就是,给每个帖子设置摘要字段:(((

  4. Shawn 说: [回复]

    不知道你是否熟悉 php,熟悉的话可以结合 mb substr ; strip tags 达到你的要求。你这里过滤好像挺严重的,没必要用这个 wyswyg 编辑器,多个 js 不说,还过滤所有代码。

  5. 老所 说: [回复]

    测试下邮件回复功能。

  6. Soloman 说: [回复]

    @Shawn 邮件功能做好了,多谢哈,不过我的邮件好像发不到gmail上去:(。还有,你说的过滤是什么意思?

  7. Soloman 说: [回复]

    @Yacca

    我以前没做过Wordpress的编程。这个模板拿来的时候使用的是excerpt,但好像它按空格来计算单词数,而我们的汉字没有空格,所以有问题啊,不知道Wordpress以后会不会改进这个东西。

  8. Shawn 说: [回复]

    我在这里,写任何 php 函数名,结果就是整条留言发送失败。还有你收不到邮件也和你用的这个评论编辑器有关。

  9. Soloman 说: [回复]

    @Shawn

    邮件能收到,你说的过滤我检查过了,比如:

    the&#95;content(x);
    the&#95;excerpt(x);
    

    这个代码,写好后,选择上,然后点击编辑器上的代码样式按钮,就可以生成代码格式了。.不过还是有问题,下划线就显示错误:(

  10. Shawn 说: [回复]

    但是,你回复给我的消息,我没有收到邮件。。。

    这个编辑器也太不符合一般人的习惯了,好看倒是挺好看。

  11. 老所 说: [回复]

    @Shawn

    唉,wordpress的微调还是很麻烦啊,看来还得慢慢调整。细节需要时间~~

  12. i.robot 说: [回复]

    有个”中文wordpress工具箱”, 好像能出来摘要输出乱码的功能, 不知道是不是和你这个做一样的事情 ;)

  13. Soloman 说: [回复]

    @i.robot

    本来准备优化下feed,正好搜索到一个wordpress工具箱,还在研究,你就提到了,呵呵。

  14. The rose love 说: [回复]

    Write quite good.Give you to encourage, next time again come to your crest once(*__*)

  15. 网络是毒药 说: [回复]

    网站不错哦。给你踩一下吧。有空也到我网站上留个脚印啊。大家互动一下,带动一下人气。(*^__^*) 嘻嘻……
    下次在来了。。88

  16. Soloman 说: [回复]

    @网络是毒药 刚才整理垃圾回复才发现你的回复被误判为垃圾了,晕,改过来了:)去你空间看看。

  17. 维修资料 说: [回复]

    天天网上游!看文章.发留言-累啊。看完了给你留个脚印。顺便也留下我网站的链接。(*^__^*) 嘻嘻……没办法这年头做网站很难啊

Other Discussion on This Post

  1. Zoo porn.
  2. Vicodin interaction with metropolol.

添加评论 (支持Gravatar头像)

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。

实时评论预览