怎么截取文章摘要内容和标题字数? - 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; /* 溢出文本使用...代替 */
}

Boke112使用心得:

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

拓展思路:

参考来源:详情

wordpress 内置函数 the_excerpt() 是个使用频率较高的函数,它是用来获取当前文章摘要的,以[...]结尾,如果在文章中没有编辑内容摘要字段,则默认截取文章的前55个字的内容,默认截取的字段去掉HTML标签和图形,并且一定要在循环内使用。

the_excerpt() 函数使用的方法也非常简单,用法如下:

这个标签没有任何的参数,直接使用即可,但函数默认的设置有时候并不能满足用户的需要,比如国内用户以 以[...]结尾就很不习惯,另外截取前 55 个字符有时候会太少了,还有文章摘要的结尾是不是我们可以自定义加个更多的链接呢,这些自定义只需要在主题 functions.php 文件中加入相应的代码就可以了,下面夏日博客教大家如何进行更自定义 wordpress 文章摘要的内容。

控制摘要的字数:

/*控制摘要字数*/
function new_excerpt_length($length) {
return 150;
}
add_filter("excerpt_length", "new_excerpt_length");

return 150 是返回的字符了,两个字符一个汉字,这个可以根据自己的需要进行设置。

更改摘要末尾的默认显示样式:

function new_excerpt_more($excerpt) {
return str_replace("[...]", "...", $excerpt);
}
add_filter("wp_trim_excerpt", "new_excerpt_more");

the_excerpt() 函数默认是以[...]结尾的,这里我们利用 php 的替换函数 str_replace 将其替换成 ...,也可以改成你自己想要的符号。

添加自定义结尾:

function new_excerpt_more($more) {
global $post;
return " ID) . "">阅读更多";
}
add_filter("excerpt_more", "new_excerpt_more");

在文章摘要的未端添加一个 阅读更多 的链接,这样看起来更符合用户的阅读习惯了,阅读更多可以改成自己想要的内容。

上面的代码均添加到主题 functions.php 文件中即可,另外,the_excerpt() 函数只能用在循环体内,否则的话会出现错误。

软件

SpaceSniffer - 轻松找到磁盘上丢失的空间

2018-11-29 13:18:46

插件

古腾堡编辑器的Pro图标 - WordPress插件

2020-4-3 0:24:26

⚠️
Npcink上的部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。
无意侵害您的权益,请发送邮件至 1355471563#qq.com 或点击右侧 私信:Muze 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索