成航先森 成航先森

成都航院计算机系一个学生的个人博客

 

WordPress技巧

最新文章

WordPress技巧
当前位置: 首页 » 建站分享 » WordPress技巧 » WordPress文章摘要内容和标题字数5种完美截取方法

WordPress文章摘要内容和标题字数5种完美截取方法

编辑:狂族晨曦 来源:WordPress技巧 日期:2016-09-10 阅读: 5,163 次 10 条评论 » 百度已收录

先森在实现博客自适应的时候,关于标题和内容的截取可谓是走了不少弯路,吃了不少亏,所以看到@boke112导航 做了一个分享,先森就转过来作为笔记了。

我们在制作(或DIY)WordPress主题的时候,特别是首页和分类目录页,我们就有必要通过控制文章摘要内容和标题的字数来让整体布局更加合理和美观,今天我们就跟大家分享五种方法完美截取WordPress文章摘要内容和标题字数。

标题和内容截取

标题和内容截取

方法一:使用WP内置函数wp_trim_words()截取

WordPress内置的wp_trim_words()函数,专门用来截取限定字数的内容,比如文章摘要、内容、标题等。

<?php
echo wp_trim_words( get_the_content(), 66 ); // 文章内容
echo wp_trim_words( get_the_excerpt(), 66 ); // 文章摘要
echo wp_trim_words( get_the_title(), 30 ); // 文章标题
?>

wp_trim_words()函数默认用法

<?php $trimmed = wp_trim_words( $text, $num_words = 55, $more = null ); ?>

参数说明

$text(字符串) (必需) 要截取的内容,默认: 无;

$num_words(整数) (可选) 限定的字数,默认: 55;

$more(字符串) (可选) 截取后加在尾部的字符,默认: ‘&hellip;’

示例说明

<?php
$content = get_the_content();
$trimmed_content = wp_trim_words( $content, 30, '<a href="'. get_permalink() .'"> ...阅读更多</a>' );
echo $trimmed_content;
?>

注:可以修改上面的数字30来设定长度。

方法二:使用php函数mb_strimwidth()截取

mb_strimwidth是超轻量级的php函数,用来获取指定的宽度截断字符串。

mb_strimwidth()函数默认用法:

mb_strimwidth  (  string $str  ,  int $start  ,  int $width  [,  string $trimmarker  [,  string $encoding  ]] )

参数说明

$str //指定字符串

$start //指定从何处开始截取

$width //截取文字的宽度

$trimmarker //超过

$width数字后显示的字符串

示例说明

平时我们调用文章标题都是这样:

<?php the_title(); ?>

现在我想控制标题的输出字数,只需要使用mb_strimwidth函数后变成这样:

<?php echo mb_strimwidth(get_the_title(), 0, 30,"..."); ?>

注:可以修改上面的数字30来设定长度。

方法三:使用原生函数customTitle ()截取

将下面的代码添加到主题的functions.php文件最后一个 ?> 的前面:

function customTitle($limit) {
    $title = get_the_title($post->ID);
    if(strlen($title) > $limit) {
        $title = substr($title, 0, $limit) . '...';
    }
    echo $title;
}

然后在需要调用的地方添加下面的代码即可:

<?php customTitle(30); ?>

注:可以修改上面的数字30来设定长度。

方法四:使用自定义函数cut_str ()截取

将下面的代码添加到主题的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;};

然后在需要调用的地方添加下面的代码即可:

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

注:可以修改上面的数字30来设定长度。

方法五:使用CSS代码来“截取”

其实这不是截取,而是隐藏了溢出的字符。我们可以在主题CSS文件style.css中对标题所在的选择器 id 或 class 添加下面的样式:

.post-title{
width:250px; /* 限制宽度(可选) */
whitewhite-space:nowrap; /* 禁止自动换行 */
word-break:keep-all;/* 这个也是禁止自动,二选一即可 */
overflow:hidden; /* 隐藏溢出的内容 */
text-overflow:ellipsis; /* 溢出文本使用...代替 */
}

总结

文中分享的五种方法都可以实现自动截取WordPress文章的内容、摘要和标题字数,至于那个方法比较好用就是仁者见仁智者见智了,boke112在使用的过程中都是结合几种方法来使用的,比如同时使用方法二、四、五,有些地方可能是用方法二,有些地方可能是用方法五,关键还是看自己喜欢吧。

历史上的今天:

标签:
本文参考自:http://boke112.com/3445.html,由狂族晨曦(capjsj.cn)整理编辑,本文共2935个字。
本文链接地址:https://www.capjsj.cn/wp_trim_words.html , 转载请保留本说明!
已有 10 位"计工"发布了激烈的评论,还有N多人围观笑而不语评论
的头像
欢迎发表评论
取消评论

表情
疑问调皮伤心抠鼻黑线微笑可爱奸笑震惊吓到了撇嘴大兵忍不住笑笑狂骂狂怒噢?鼓掌酷⊙﹏⊙b汗鄙视大哭嘿嘿

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. 的头像

    大神都是这么做的。辛苦了。

    2016-09-11 15:05 回复
  2. 的头像

    SEO不需要插件了?

    2016-09-11 17:37 回复
  3. 的头像

    java中用截取字符串解决这个问题

    2016-09-11 20:45 回复
  4. 的头像

    五种方法,博主不怕练功走火入魔啊。

    2016-09-11 22:22 回复
  5. 的头像

    万恶意淫为首,百善回帖为先

    2016-09-12 19:39 回复
  6. 的头像

    感谢楼主的分享,赞赞。

    2016-09-13 19:12 回复
  7. 的头像

    朋友,交换链接吗?

    2016-09-26 15:10 回复
  8. 的头像

    完全看不懂 请问WP默认主题如果文章内容字数很多的话 首页也是会全部显示的 请问怎么截取部分呢?亲赐教,谢谢!

    2017-07-23 20:49 回复
  9. 的头像

    已经解决了 在文章需要截断处添加“more”标签即可

    2017-07-23 21:10 回复
    • 博主的Gravatar 头像

      @Clovers: 这个倒是简单。我这边的话,是用的< ?php echo deel_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)) , 0, 150, '...'); ?>

      2017-07-24 09:54 回复
官方微信
发表评论 返回顶部