非插件实现WordPress主题中文自动截断

发布时间:2020-05-05

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

那么显示文章部分内容有什么好处呢,那就是既可以增加首页的信息量,方便浏览者快速找到想看的内容,又不会把首页拉的很长,整齐美观,还有什么…想起来再说.

实现文字截断的方法很多,比如:在编辑文章时在适当位置加入more标签、安装启用中文工具箱等,特别是一些国外主题会加入特殊的函数实现文字截断,但中文字符与英文字符的算法不同,对中文的截断不是很理想。这里为大家推荐适合中文截断的方法,这些方法已应用在我制作的热点新闻主题中。

文章截断:

  1. <?php echo mb_strimwidth(strip_tags(apply_filters(‘the_content’, $post->post_content)), 0, 200,“…”); ?>

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

  1. <?php the_content(‘Read more…’); ?>

  1. <?php the_excerpt(); ?>

其中数字200是字数,可以适当调整,但最好保持为偶数.

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

  1. <?php echo mb_strimwidth(get_the_title(), 0, 24, ); ?>

不过当中文与英文同时存在于标题中时,还是会造成截断不准确,这个问题在文章截断中并不是很明显。

最理想的标题截断方法:

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

  1. //文字截断
  2. function cut_str($src_str,$cut_length)
  3. {
  4. $return_str=;
  5. $i=0;
  6. $n=0;
  7. $str_length=strlen($src_str);
  8. while (($n<$cut_length) && ($i<=$str_length))
  9. {
  10. $tmp_str=substr($src_str,$i,1);
  11. $ascnum=ord($tmp_str);
  12. if ($ascnum>=224)
  13. {
  14. $return_str=$return_str.substr($src_str,$i,3);
  15. $i=$i+3;
  16. $n=$n+2;
  17. }
  18. elseif ($ascnum>=192)
  19. {
  20. $return_str=$return_str.substr($src_str,$i,2);
  21. $i=$i+2;
  22. $n=$n+2;
  23. }
  24. elseif ($ascnum>=65 && $ascnum<=90)
  25. {
  26. $return_str=$return_str.substr($src_str,$i,1);
  27. $i=$i+1;
  28. $n=$n+2;
  29. }
  30. else
  31. {
  32. $return_str=$return_str.substr($src_str,$i,1);
  33. $i=$i+1;
  34. $n=$n+1;
  35. }
  36. }
  37. if ($i<$str_length)
  38. {
  39. $return_str = $return_str . ;
  40. }
  41. if (get_post_status() == ‘private‘)
  42. {
  43. $return_str = $return_str . ‘(private)’;
  44. }
  45. return $return_str;
  46. }

再用下面的代码

  1. <?php echo cut_str($post->post_title,32); ?>

替换主题模板中的

  1. <?php the_title(); ?>

其中:调整数字32可以控制标题的长度.

以上函数代码全部来自网络,原作者未知,有认领者请留言!

大熊wordpress凭借多年的wordpress企业主题制作经验,坚持以“为用户而生的wordpress主题”为宗旨,累计为2000多家客户提供品质wordpress建站服务,得到了客户的一致好评。我们一直用心对待每一个客户,我们坚信:“善待客户,将会成为终身客户”。大熊wordpress能坚持多年,是因为我们一直诚信。我们明码标价(wordpress做网站需要多少钱),从不忽悠任何客户,我们的报价宗旨:“拒绝暴利,只保留合理的利润”。如果您有网站建设、网站改版、网站维护等方面的需求,请立即咨询右侧在线客服或拨打咨询热线:18324743309,我们会详细为你一一解答你心中的疑难。

相关文章

写给所有做网站的朋友的一封信

写给所有做网站的朋友的一封信

现在就开始执行“1+N”互联网推广和没有开始执行的人,一两天看不出任何区别; 一两个月看来差异也是微乎其微的;但在2-5年的长远时间来看的时候,你的高质量询盘不断增加,你的互联网资产已经建立完成,对手已经很难匹敌,现在你看到这段文字的时候就是最好的开始,现在就是最好的时候,马上开始“1+N”体系的整体互联网推广吧,我们和你一起,开创互联网大未来!

点击查看详情

准备开启WordPress网站建设推广?

我们相信高端漂亮的网站不应该是昂贵的,这就是wordpress对每个人都是免费的原因
wordpress建站免费入门,并提供价格合理的wordpress建站套餐。