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

欢迎小白鼠们踊跃测试~
-
自定义 Wordpress more 标签显示位置2011年04月7日 -
Wordpress More 标签从起始位置显示2010年05月14日 -
Wordpress 3种日志摘要方法2009年08月22日 -
Wordpress 日志摘要截断的补充说明2010年08月30日