網生@誌 | zEUS.'Blog

首页 » Wordpress研究 » 2009-12-1 »

如何控制 WordPress 文章标题的长度(顺带测试一下超长的标题输出)

字体大小:T | T

虽然大多数时候我们不需要去管 WordPress 文章标题有多长,因为一般比较长的标题会自动分为两行显示。但是有时候我们为了控制模板的样式整洁,希望文章标题只显示成一行,比如 D&Z Theme Pro CP 主题首页幻灯片右侧的“最新的一篇日志”,这里我首先使用固定长度的摘要来控制文章长度,但是如果有时候文章标题过长而显示成两行的时候,文章摘要就会出现“溢出”。这个时候如果能让标题的长度固定为一行,就能让这里的样式看起来更整洁。在好友 Lee 的帮助下,我解决了这个问题。

其实解决这个问题很简单,只需要一句话就行了。在 WordPress 里,我们使用

<?php the_title(); ?>

来输出文章标题,与其相关的还有一个函数:

<?php get_the_title(); ?>

简单的说说两者的关系,get_the_title() 返回值是一个字符串(文章标题),而 the_title() 就是该字符串通过 echo 输出后的值。
实际上就是 WordPress 自己在输出文章标题时进行了简化,直接用

<?php the_title(); ?>

代替了

<?php echo get_the_title(); ?>

除此之外这里还需要用到另外一个函数:mb_strimwidth(string str, int start, int width, [string trimmarker], [string encoding]);

mb_strimwidth() truncates string str to specified width. It returns truncated string.

If trimmarker is set, trimmarker is appended to return value.

start is start position offset. Number of characters from the beginning of string. (First character is 0)

trimmarker is string that is added to the end of string when string is truncated.

encoding is character encoding. If it is omitted, internal encoding is used.

现在大部分的 PHP 服务器都支持了 MB 库(mbstring 库 全称是 Multi-Byte String 即各种语言都有自己的编码,他们的字节数是不一样的,目前php内部的编码只支持ISO-8859-*, EUC-JP, UTF-8 其他的编码的语言是没办法在 php 程序上正确显示的。解决的方法就是通过 php 的 mbstring 函数库来解决),所以我们可以放心的使用这个用于控制字符串长度的函数:

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

那么我们只需要用上面这个函数替换 WordPress 原有的

<?php the_title(); ?>

即可,这里我输出了字符串的第0位到第38位,根据主题的不同可以自行设置该数值,另外多余长度部分使用“…”代替。

控制 WordPress 文章标题长度

控制 WordPress 文章标题长度

其实我在控制文章摘要的时候也是使用的这个函数,比如我在 D&Z Theme Pro CP 主题的首页里使用的就是

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

来输出470个字符长度的摘要,并过滤了 HTML 标记。

虽然这是个很简单的方法,但我相信它对主题制作者而言还是相当实用的 🙂

zEUS.

« »

已经有27人发表了评论

  1. 感謝您提供的方法!

  2. 謝謝啦,研究很久了

  3. 加到什么地方呢?

  4. 哈哈,不错,谢谢了,这个方法最科学了!

  5. 侧边栏的标题可以设置截断吗?

  6. 这个可以用CSS来实现吧!

  7. Q群不让加?

    请教博主,侧边栏最新日志的标题截断该如何做呢?
    期待解答

文章反相链接 Pingback/Trackback

  1. Shadow
  2. 如何控制 Wordpress 文章标题的长度 | 180度生活

发表您的看法

TOP COMMENTS BOTTOM