WordPress文章摘要內容和標題字數5種完美截取方法
編輯:狂族晨曦 來源:WordPress技巧 日期:2016-09-10 閱讀: 6,449 次 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(字符串) (可選) 截取后加在尾部的字符,默認: ‘…’
示例說明:
<?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://www.cnidcc.cn/wp_trim_words.html , 轉載請保留本說明!

川公網安備 51011202000104號
大神都是這么做的。辛苦了。
SEO不需要插件了?
java中用截取字符串解決這個問題
五種方法,博主不怕練功走火入魔啊。
萬惡意淫為首,百善回帖為先
感謝樓主的分享,贊贊。
朋友,交換鏈接嗎?
完全看不懂 請問WP默認主題如果文章內容字數很多的話 首頁也是會全部顯示的 請問怎么截取部分呢?親賜教,謝謝!
已經解決了 在文章需要截斷處添加“more”標簽即可
@Clovers: 這個倒是簡單。我這邊的話,是用的
< ?php echo deel_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)) , 0, 150, '...'); ?>