English version of this article: https://myfairland.net/wp-utf8-excerpt-en/

如果你觉得我的插件有用,欢迎向我捐赠

提问之前请确保你查看了插件附带的 readme 文件,或本文。

不看 readme 或本文、不懂礼貌、话都说不清楚的人,抱歉我无法回答你们的问题。

插件简介:

WordPress 自带的摘要功能只支持西方文字,其他 WordPress 摘要插件要么对中文支持得不好,容易出现乱码;要么把原文所有的格式都去掉,只剩光秃秃的文字。本插件是一个适合中文的摘要插件,可设置是否保留文章中的格式标签,如字体、颜色、链接、图片等。

主要特点:

1,支持多字节语言(如中文),不会产生乱码。

2,摘要可保留文章中的格式标签,如字体、颜色、链接、图片等(需保留的标签可在后台设置)。

3,首页每篇文章显示300字,存档页面每篇文章显示150字(字数可设置)。这里的字数是真正文字的有效字数,不包括各种 HTML 标签的字数。

安装:

1,解压到/wp-content/plugins/目录

2,在插件页面激活插件

即可!

如果不能工作,请检查主题的index.php文件,把

<?php the_content(); ?>

改成

<?php
if (is_single() or is_page()) {
the_content();
} else {
the_excerpt();
}
?>

注意:有些主题在the_content()中还有一些字,比如the_content(’Continue Reading »’),这种要把整句话换掉。有些主题用了其他文件来控制存档页面,如category.php、archive.php等,如有必要,请对这些文件也做修改。
更新:WordPress 新的默认主题 Twenty Ten 和 Twenty Eleven 不是在 index.php 中改了,而是改 content.php,改动方法同上。

常见问题:

1,为什么安装了插件之后无效?

答:请看“安装”部分,确认对主题文件进行了正确的修改。

2,想/不想在摘要中显示某些标签,比如图片、视频,怎么办?

答:进入后台设置页面(Settings——Excerpt),修改Allow these HTML tags中的内容。

默认设置显示图片,不想显示图片的话就把<img>删掉。

默认设置不显示视频,想显示视频的话就加入视频的标签,各个视频网站不一样,有可能是<embed>或<object>或其他,查看插入视频的代码就知道了。

其他标签以此类推。

3,为什么某些文章还是输出全文了?

答:因为你的全文太短了……

摘要显示的优先级如下:

1). 如果用户手动设定了摘要,就显示手动设置的摘要,不管字数和标签。

2). 如果设置了<!–more–>,就输出<!–more–>之前的部分,不管字数和标签。

3). 如果原文长度小于用户设定的摘要字数,显示全部字数,但会按照用户设置的允许标签来过滤标签(以后可能会提供设置来决定是否过滤标签)。这种情况下不会显示[……]和“继续阅读”链接。

4). 其他情况,按照用户设置的字数和允许标签来显示摘要。

4,我用的主题中找不到the_content()怎么办?

答:有的主题非常复杂,对文章输出做了自己的处理,有的还自带摘要功能(但一般只对西文适用……)。对于这些特殊复杂主题,改动难度很大,我也没有精力一一检查那些主题,所以只能请大家见谅:这种主题和这个插件,你恐怕只能选一个了……

5,为什么我的RSS Feed不显示全文?

答:本主题没有动RSS Feed,你的Feed不显示全文,应该跟本主题无关。请查看你的后台——设置——阅读——Feed中每篇文章,是不是选成摘要了。

6,我用了代码高亮插件,显示不正常?

答:用代码格式化插件好像确实容易出问题。对于这种文章,暂时请大家先手动加摘要吧,我再想想办法。

7,我讨厌那个“继续阅读”链接,怎么办?

答:后台选项中可以设置“继续阅读”的文本,你可以改成“Read more”或其他任何东西。它的class为read-more,可以用CSS进行美化或隐藏。如果你实在讨厌它,请打开插件文件wp-utf8-excerpt.php,找到165行左右的

$text .= "<p class='read-more'><a href='".get_permalink()."'>".$read_more_link."</a></p>";

删掉它,或者注释掉它(在行首加上//),它就不会出现了。

下载地址:

WordPress 官网:http://wordpress.org/extend/plugins/wp-utf8-excerpt/

附注:

部分代码参考了Advanced Excerpt 插件 Yskin 的摘要插件,以及此文的 mb_substr() 函数替代算法,向这些作者致谢。