修改WordPress文章列表的摘要长度

  • A+
所属分类:WordPress

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格式,那么还是需要插件支持。

weinxin
独角兽驿站
公众号

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: