首页 > WordPress, 网站运营 > 解决wordpress首页文章内容截断处理的几种方法
201208月7

解决wordpress首页文章内容截断处理的几种方法

修改背景

搭建博客有一个多月了,因为到年底了,公司一直也比较忙,没有多的时间来修改和完善博客,这周末没有加班所以就将博客里面一些需要修改的地方都修改下,wordpress 首页默认显示的是全部文章内容,没有对文章内容进行截断处理,影响网页打开速度。知道文章编辑里面有那个“more”的代码,我尝试了,也是好使的,但是必须每个文章都需要添加这个代码,未免有些麻烦,所以寻求一种可以自动文章截断的方法,之前在网上查到一种方法,可以在文章达到多少字节时自动截断,但是截断的文章失去了样式,排版特别乱,而且就算图片在最前面也无法显示,最后在网上找到了几钟方法,所以分享下。

方法一 采用 more方式

这是wordpress里面自带的默认的简单最直接的方法,在文章中需要进行截断的地方加入 more,实现将你的文章从该标签的地方截断,前面部分作为首页显示的文章摘要,内容页不做任何影响。因此,一篇文章只需要加入一个 more 就可以了。而且添加 more 标签必须再HTML模式下,否则将不起作用。当然在,wordpress中每篇文章也可以单独的输入摘要内容,输入后如果不做任何模板的修改,那么可以在分类列表看到你的文章摘要是你输入的摘要。其实就是the_excerpt()函数,它获取你手动输入的摘要,如果没有手动输入,那么获取文章内容的开头部分作为摘要输出。

方法二 采用the_excerpt()代替the_content()函数

如果稍微懂得wordpress的模板修改或懂得一些程序方面的知识,肯定对这两个函数不陌生,the_excerpt()是输出文章的摘要,不同的主题这个摘要的输出格式和字数可能不同,上面也讲了,它是先判断你是否有手动输入的摘要,如果没有再将文章内的前面截断部分的输出,而且是不换行的输出。而the_content()就是全文输出了。使用这种方法会让原来的首页相当干净,不仅文字急剧减少,而且没有图片,最痛苦的是之前文字的样式丢失,并且没有分段。(下文会讲解如何解决这种没有分段的情况)因此,这种方法是不可取的。

方法三 使用函数功能获取文章开头的固定字数

这种方法需要mb_strimwidth()函数支持,使用mb_strimwidth函数来截取文章内容,以达到显示固定字数摘要的目的,比如首页摘要显示前200个字:
使用方法1:
找到模板内 index.php中的
本模板里面默认的是
将其替换为

post_content)), 0, 120,"......"); ?>
post_content)), 0, 500,"..."); ?>

使用方法1:
在当前主题文件夹下的functions.php文件下加入如下代码:

add_filter('the_content','substr_content');
function substr_content($content){
	if(!is_singular()){
		$content=mb_strimwidth(strip_tags($content),0,200);
	}
	return $content;
}

其中”is_singular()”是条件判断函数,表示在除单页面外的首页或分类等列表页面应用该函数,”200″表示截取的字数,相当于200个英文字符或100个中文字符,如果需要显示50个汉字,就将200修改成100
其它条件判断语句:

is_category()      //仅在分类目录页应用
is_tag()           //仅在标签页应用
is_category() || is_tag()    //仅在目录页或标签页应用
is_date()          //仅在文章归档页应用
is_search()        //仅在搜索页面应用

这种方法同方法二,同样存在样式丢失、并且没有分段,此方法不可取

方法四 使用ordpress摘要插件

网上有很多这样的方法,估计有好几百个,这里就不多提,只是列举几个
1、Fwolf的 http://www.fwolf.com/blog/post/296
和wp自带的几乎一样,只不过把按空格判断改成了按段落判断,会输出文章的前三段作为摘要。因为是按段落输出,也不会出现中文乱码。
2、桑葚的中文工具箱 http://yanfeng.org/blog/wordpress/kit/
用substr()函数截取前256个字节,再用utf8_trim()函数处理,保证中文不会出现乱码
3,Yskin的 http://yskin.net/2006/07/mulberrykit.html
Yskin的是段落和字数混合判断,先根据回车把文章分割成n段,然后用mb_strlen()判断字数,如果没超过规定的字数,就再输出一段。因此他的最小输出单位仍然是段落。

个人总结

以上方法二、三、四都有一个共同特点:输出的摘要是没有格式的,只有纯文本,原来的颜色、字体、超链接、图片等等都被过滤掉了。我个人感觉这些东西都是比较重要的东西,所以个人很排斥以上三种方法,因为我本人希望能够保留格式,如果你是一个希望写博客的人,肯定希望将博客的排版弄的好一些,博文写的精致一些,所以你肯定不会介于写博文的时候加入一个 more 标记,所以本人最后采取的方法一、即加入 more 标记实现文章的截断。以上只是个人的观点,站长们可以根据自己的情况来确定使用哪种摘要形式。

文章作者: iitshare
本文地址:http://www.iitshare.com/wordpress-display-summary.html
版权所有 © 转载时必须以链接形式注明作者和原始出处!

更多

2 Responses to “解决wordpress首页文章内容截断处理的几种方法”

  1. #1 yearliny 回复 | 引用 Post:2016-02-17 17:02

    方法很好,可是下面的方法能不是在截断的最尾部加上“阅读全文”这几个字,或者加个省略号,看起来实在是,像是博客出了问题一样。
    使用方法1:
    在当前主题文件夹下的functions.php文件下加入如下代码:

    add_filter(‘the_content’,’substr_content’);
    function substr_content($content){
    if(!is_singular()){
    $content=mb_strimwidth(strip_tags($content),0,200);
    }
    return $content;
    }

发表评论