WordPress the_excerpt()截取摘要长度

WordPress the_excerpt()截取摘要长度

作者: Standway  发表于: 2013-04-22   点击: 7121

WordPress Modify The Excerpt Lenth

用法:

the_excerpt()
输出当前文章的摘要,并会附上”[…]”,这不是”更多”的链接。如果你没提供一篇文章明确的摘要(后台文章编辑器的可选摘要区域),它将自动摘录文章内容中前55个字作为摘要。而HTML标签和图片都会从摘要内容中去除。此标签必须用在主循环里。
用法:
示例:
使用条件判断语句判断在分类页或者存档页显示摘要,其他页显示内容
the_excerpt();
} else {
the_content(); }
?>
get_the_excerpt()
返回文章摘要赋值给变量。此标签必须在主循环里。如果你仅希望输出文章摘要,你可以直接使用the_excerpt().
用法: $excerpt = get_the_excerpt($deprecated) ?>
参数:$deprecated 没有要求
返回的值:
1、如果文章没有摘要,它将返回一个空字符串,并随后加上”[…]”。
2、对于密码保护的网页,它将返回一个字符串,默认值是”没有摘要,因为这是一个受保护的文章。”,通过函数定义可以改变文字。
3、如果文章有摘要并且没有密码保护的话,就会返回摘要作为一个字符串。
示例:
get_the_excerpt()
用于检索和存储值在一个变量,没有输出到页面。

eg1:
$myExcerpt = get_the_excerpt();
if ($myExcerpt != ”) {
…..
}
echo $myExcerpt;
?>
eg2:
the_excerpt_max_charlength(140);
function the_excerpt_max_charlength($charlength) {
   $excerpt =
get_the_excerpt();//获取摘要
$charlength++;
if(strlen($excerpt)>$charlength)
{//如果摘要长度大于指定长度,就需要截取
$subex = substr($excerpt,0,$charlength-5);//截取减去[…]的长度
$exwords = explode(” “,$subex);//将字符串分割成数组
$excut = -(strlen($exwords[count($exwords)-1]));//截取最后一个字符
if($excut<0) {echo substr($subex,0,$excut);} else {echo $subex;
}
echo “[…]”;
} else {
//如果取得的字符串长度小于指定长度,则直接输出
echo
$excerpt;
}
}
源文件:get_the_excerpt()和the_excerpt() 都在
wp-includes/post-template.php文件.

———————————————————-

解决方案:

今天帮朋友修改wordpress主题,提出了一个需求,想要把首页文章默认输出的摘要长度增长一些,研究了好一会儿才最终研究出结果:首页的文章是用the_excerpt()函数直接输出post的摘要内容的,最恶心的是这个函数没有入参,the_excerpt()的输出长度是确定的55字符。

The_excerpt()在英文中,默认是截取55个英文单词的,但是在中文中却是无法截取到55个汉字。原因是因为在wordpress的the_excerpt()函数中用到了

$text = implode(‘ ‘, $words);

经过研究,有三种方案在wordpress中修改默认摘要函数the_excerpt()的输出长度,分别给大家分享下。

方法一:修改wordpress文件,直接把函数的输出长度改为需要的长度。

优点: 修改简单完全控制,但是缺点也很明显,侵入了wordpress的文件,一旦博客升级这个方法就会失效,如有多个域名就会一起生效。

这个方法改起来很简单,找到wp-includes下的formatting.php文件,查找function wp_trim_excerpt($text)函数,找到excerpt_length,把相对应的55修改成自己喜欢的数值即可。

方法二:自定义一个函数替代the_excerpt()

优点:独立主题控制,缺陷:只能控制少于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 格式,那么还是需要插件支持。

上一篇: 祈福雅安,雅安加油 下一篇: WordPress bloginfo()和get_bloginfo()函数的区

你可能感兴趣的:(php)