- A+
WordPress文章列表默认用the_excerpt()
函数直接输出post的摘要内容,但是这个函数没有入参,the_excerpt()
的输出长度是确定的55字符。
the_excerpt()
在英文中,默认截取55个英文单词。中文中无法截取到55个汉字,会显示很长中文(直到55个英文单词为止)。原因是因为在WordPress的the_excerpt()
函数中用到了$text = implode(‘ ‘, $words);
三种解决方案修改默认摘要函数the_excerpt()
的输出长度如下。
方法一:修改WordPress文件,直接把函数的输出长度改为需要的长度
优点: 修改简单完全控制,但是缺点也很明显,侵入了WordPress的文件,一旦博客升级这个方法就会失效,如有多个域名就会一起生效。
这个方法改起来很简单,找到wp-includes
下的formatting.php
文件,查找function wp_trim_excerpt($text)
函数,找到excerpt_length
,把相对应的55修改成自己喜欢的数值即可。
方法二:自定义一个函数替代the_excerpt()
(如team主题)
优点:独立主题控制,缺陷:只能控制少于55个字符!!!大于55个字符,依然输出55个字符。在主题的functions.php
文件添加如下的代码。
function chinese_excerpt($text, $lenth=100) {
$text = mb_substr($text,0, $lenth);
return $text;
}
add_filter('the_excerpt', 'chinese_excerpt');
可以根据你的需要把$lenth
改成你需要的长度即可。这个方法只是用自己写的函数替换掉了the_excerpt()
,优点很明显,完全不侵入WordPress的文件,只要你使用这个主题就可以了。
方法三:自定义一个函数替代excerpt_length()
优点: 独立主题,不影响WordPress内部文件,可以控制任意字符,包括大于55个字符,超级简单的!这个就方便了,终于不用专门对中文的摘录进行处理了。有些朋友可能会说:那如何控制截取文字个数?很简单,很多主题都有这类自定义方法:把下面的内容放到你的主题functions.php
里面。
//custom_excerpt_length
function custom_excerpt_length( $length ){
return 200;
}
add_filter( 'excerpt_length', 'custom_excerpt_length');
说明:里面的 200 就是文字个数,根据自己需要设置。以后要摘录输出就直接用the_excerpt()
函数输出,当然,摘录中你要保留文章的HTML格式,那么还是需要插件支持。