接着前天讨论的在 WordPress 中 More 标签的问题继续研究,不过今天不是再讨论 More 标签的问题,而是讨论一下关于 WordPress 中日志摘要的其他几种方法。N久N久以前,我对三种不同的日志摘要方法进行过分析对比,各有所长,大家也各有所好,这几天在给某童鞋修改主题的时候,对方提出一个很新奇的创意,这几种不同的日志摘要方法能不能按优先级的顺序同时使用?
何为同时使用不同的日志摘要?比如说,我们都知道 WordPress 在编辑新日志的时候有自定义摘要功能,不过不是所有用户都会使用该功能,也不是所有用户在每篇文章都需要该功能。这时候我们就需要,在用户自定义摘要的时候,则首页的该日志摘要显示由用户自定义的摘要,当用户没有自定义摘要的时候,则显示由 More 标签截断的摘要部分,或者显示以固定字符数自动截取的日志摘要部分。
用文字表达起来可能有点绕,还是用代码吧,我写的比较简单,这样条理也比较明朗一些:
//获取自定义摘要的内容
$myExcerpt = $post->post_excerpt;
//如果自定义摘要内容为空
if ( empty ( $myExcerpt ) ) {
//方法一、自动截断日志前300个字符作为摘要,支持中文截断
echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 300,"......");
//方法二、习惯用 More 标签作为日志的童鞋可以用这个方法,将下面 the_content() 前的注释去掉并且把方法一注释
//the_content();
} else {
//摘出自定义摘要
echo $myExcerpt."......";
}
?>
都已经配上注释了,应该很好理解吧,把以上代码替换 index.php 中原摘要输出的代码,比如:
或者:
需要注意的是,其中方法一中的 mb_strimwidth 函数是 PHP5 特有的,在 Win主机和 PHP4 的主机上都不能用,会出现乱码。不过现在大家的 WordPress 版本应该都上 2.9+ 了吧,Wordpress 2.9+ 默认是要求 PHP5 的,所以一般可以放心使用。
使用的方法也是很简单,如果需要对某篇日志进行自定义摘要,则只需在编辑日志的时候将需要的内容(支持 HTML)输入到正文编辑区域下方的“摘要”栏里即可;如果无需自定义摘要则留空。

欢迎小白鼠们踊跃测试~



这样输出的摘要 最后一个字有的会是一个黑底的问号 有办法解决么?
难道你是win主机?不支持mb_strimwidth函数?
linux vps啊,php5的没错。
是不是需要显示指定为utf-8编码呢?
老万输出日志摘要的办法和我的做法异曲同工啊。
WP一种效果都有千种实现方法,当用了某种效果之后,看到有其他更为牛的实现方法之后就为自己早早的决定后悔,比如我的图片装了相册插件之后看到别人的相册插件更方便,后悔了。
说到相册插件,也有免插件的方法,哈哈
秀出来看看,我想把我博客的那个去掉。万一那个插件的人不更新我的图片岂不是要挂掉,未雨绸缪啊。
HOHO,改天再写个教程吧,可能已经有人写过了,你搜搜看吧
很好的提议,有时候的确想按需要输出。
打错字了,是“指导”
呵呵,指导谈不上,你能用上就好
多谢老师知道!
我还没用过摘要 多谢提醒
不用客气哈,值得一试的
我这个Z-blog是多个博客聚合的!能同一个后台就好了!
来踩踩 踩踩更健康~~~
榜样的力量,到处都是感谢老万的博文。
你的很多背景图片左上右下角都改成圆角的啦?!
才发现呀,早就改成圆角的啦
哇哦,学习了..
more标签有很好的用户体验。不过我还是不捣鼓了。
more标签很累人的,每篇都要添加
今年的某一天,我抛弃了摘要插件,给300多篇文章加上more
花了几个小时,超囧
这个想法不错……值得借鉴。
呵呵,谢谢,要不是主题需要,我也想不到这个歪点子
PJ表示只盖楼,不发表观点,笑而不语,别逼我!
不要以为你是老佛爷 我就怕了你 嘿 誓死不从!
来啊,小桌子、小凳子,把苏苏的下面咔嚓掉
我是新手 来学习一下!
呵呵,欢迎常来交流啊~
俺用的MORE
More是最原始的,也是最简单的
这个不错 哈哈~~
嘿嘿,可以试试哈~
有了老万,是WP的福气呀~
哈哈,看你说的,有WP才是我们的福气
我现在使用的是一个excerpt插件,有摘要的时候显示摘要,没有摘要的时候显示自动截取部分。但有个问题是,在搜索页面或者是tag页面,不起作用……
这就是插件的缺陷了,不够个性化
万戈,俺来问问题啦,你这个评论框上面的访客头像是怎么显示的呢?
这个说不清楚,改天我写个教程好啦
我也想知道如何调用头像
先谢谢了,期待教程了。 看来您永远不会出现文囧哦,因为你这有太多的东西可以挖掘了。
正在准备去除此功能插件. 拿走分析. 试用. 嘿嘿.
哈哈,这个插件的确可以免啦~
一直用more,随心所欲,挺好的~
就是每篇都要手动,有点麻烦哦
呵呵,,每篇文章插图排版都要弄挺久,也就不在乎加个标签了。
看来你很用心啊,我是不太关注排版的,呵呵
想当年摘要方法是您提供给我的.
看来万兄已经把这个方法沿用到我的新主题中啦;)幸运!
还没有加上,仅在本地测试通过了,你需要的话可以加上啊
越研究越深了 越有兴趣了
哈哈,我还打算合并4种摘要方法呢
这个太棒了,用上用上!我的新主题一直用着more 标签,在点麻烦滴说,这回好了,解放了。
有人可以用上就太好了,没有白写啊
又更新了?万戈成了技术狂人了。
狂人不敢当,难得周末有时间小折腾一下啦
偶都是纯手工辛辛苦苦输入滴~
不是很用这些啊。
因为那个adsense放着会在IE下引起错位
这样我,
以为博客标题上写上大大的no ie
这样可以限制显示字符,但就好像不太自然了~
因为mb_strimwidth过滤了所有的HTML标签,不过我挺喜欢这样的,简洁~
我持续使用最原始的more标签
每篇都要添加more,不是很累吗?
又更新了,好快啊
哈哈,更跟上更新速度吧
看到下边的那张图里的链接就去点……
我受当了!
哈哈,你也太容易上当啦
不会add_filter
冰哥哥谦虚啊
拜读
客气啦,小折腾而已
学习了..每天见万戈折腾wp,劲头没有减弱啊
已经明显减弱啦,从代码的数量上就可以看出,现在写的代码越来越简单,越来越基础
NONONONO....这些叫返璞归真,哈哈哈
慢了,没有沙发了,呵呵
哈哈,明日请早啦~
如果今天我开了推特肯定抢到的,为什么我没看呢,郁闷啊
没想到我这个时候会发布吧
嘿嘿,被人捉摸不到才好,呵呵
mb_strimwidth这个函数是非常好用滴~~
恩,而且可以过滤所有的HTML标签,爽啊
支持一下技术文!
嘿嘿,谢谢支持啦~
无人杀发?
木木火速杀来