WordPress主题中文自动截断

作者:admin发表时间:2010-2-1 评论:1 点击 3,926+

WordPress CMS主题有一个共有的特性就是,首页只显示文章部分内容,也就是俗称的文字截断,这个与真正的WP摘要功能无关,只是控制文章字数显示在首页,真正的WP摘要需要主题的支持,两者不能混为一谈.

那么显示文章部分内容有什么好处呢,那就是既可以增加首页的信息量,方便浏览者快速找到想看的内容,又不会把首页拉的很长,整齐美观,实现文字截断的方法很多,比如:在编辑文章时在适当位置加入more标签、安装启用中文工具箱等,特别是一些国外主题会加入特殊的函数实现文字截断,但中文字符与英文字符的算法不同,对中文的截断不是很理想下面有几种方法最后一种最好不会出现首页乱码,而有些截断会对中文造成乱码问题。

1、文章截断:

<?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 500,"..."); ?>

用上面的代码替换当前主题archive.php、index.php模板文件中类似:

<?php the_content('Read more...'); ?>

或者

<?php the_excerpt(); ?>

2、文章标题截断:

很多CMS主题是以分类文章列表形式展示的,但当某个文章标题太长,就会造成回行,很不美观,必须要将多余的文字去掉,比较简单也比较笨拙方法是用CSS截断,可惜当文章标题同时有汉字和英文时问题就明显了,经常是一个字只截断了一半,看上去很古怪。还是定义PHP函数实现标题截断比较合理也非常容易。

下面的标题截断函数与文章截断函数同出一辙:

<?php echo mb_strimwidth(get_the_title(), 0, 20, ''); ?>

3、文章截断:

首先将下面的代码添加到主题functions.php模板文件中

//文字截断 
function cut_str($src_str,$cut_length)
{
$return_str='';
$i=0;
$n=0;
$str_length=strlen($src_str);
while (($n<$cut_length) && ($i<=$str_length))
{
$tmp_str=substr($src_str,$i,1);
$ascnum=ord($tmp_str);
if ($ascnum>=224)
{
$return_str=$return_str.substr($src_str,$i,3);
$i=$i+3;
$n=$n+2;
}
elseif ($ascnum>=192)
{
$return_str=$return_str.substr($src_str,$i,2);
$i=$i+2;
$n=$n+2;
}
elseif ($ascnum>=65 && $ascnum<=90)
{
$return_str=$return_str.substr($src_str,$i,1);
$i=$i+1;
$n=$n+2;
}
else
{
$return_str=$return_str.substr($src_str,$i,1);
$i=$i+1;
$n=$n+1;
}
}
if ($i<$str_length)
{
$return_str = $return_str . '';
}
if (get_post_status() == 'private')
{
$return_str = $return_str . '(private)';
}
return $return_str;
}
//end

再以下面代码

<?php echo cut_str($post->post_title,500); ?>

替换原主题archive.php、index.php等模板文件中如下文件:

<?php the_title(); ?>

ok!

顶一下 0 踩一下 0

你可能对以下内容感兴趣!

  1. 谷歌打不开,wordpress后台反应慢
  2. wordpress免费的备份插件BackUpWor...
  3. 谈一谈让wordpress更安全
  4. wordpress添加自定义默认头像
  5. wordpress本地测试站开启伪静态
  6. 修改wordpress官方twentyeleven...
  7. 给wordpress友情链接页面添加Favicon...
  8. JQuery和CSS 版wordpress 弹性伸...

1 个评论 “WordPress主题中文自动截断

发表回复

*

w_0002.gif w_0009.gif w_0007.gif w_0011.gif w_0005.gif w_0008.gif w_0010.gif w_0003.gif w_0012.gif w_0001.gif w_0006.gif