WordPress文章摘要內(nèi)容和標(biāo)題字?jǐn)?shù)5種完美截取方法
編輯:狂族晨曦 來(lái)源:WordPress技巧 日期:2016-09-10 閱讀: 6,655 次 10 條評(píng)論 » 百度已收錄
先森在實(shí)現(xiàn)博客自適應(yīng)的時(shí)候,關(guān)于標(biāo)題和內(nèi)容的截取可謂是走了不少?gòu)澛罚粤瞬簧偬潱钥吹紷boke112導(dǎo)航 做了一個(gè)分享,先森就轉(zhuǎn)過(guò)來(lái)作為筆記了。
我們?cè)谥谱鳎ɑ駾IY)WordPress主題的時(shí)候,特別是首頁(yè)和分類(lèi)目錄頁(yè),我們就有必要通過(guò)控制文章摘要內(nèi)容和標(biāo)題的字?jǐn)?shù)來(lái)讓整體布局更加合理和美觀,今天我們就跟大家分享五種方法完美截取WordPress文章摘要內(nèi)容和標(biāo)題字?jǐn)?shù)。

標(biāo)題和內(nèi)容截取
方法一:使用WP內(nèi)置函數(shù)wp_trim_words()截取
WordPress內(nèi)置的wp_trim_words()函數(shù),專(zhuān)門(mén)用來(lái)截取限定字?jǐn)?shù)的內(nèi)容,比如文章摘要、內(nèi)容、標(biāo)題等。
<?php echo wp_trim_words( get_the_content(), 66 ); // 文章內(nèi)容 echo wp_trim_words( get_the_excerpt(), 66 ); // 文章摘要 echo wp_trim_words( get_the_title(), 30 ); // 文章標(biāo)題 ?>
wp_trim_words()函數(shù)默認(rèn)用法:
<?php $trimmed = wp_trim_words( $text, $num_words = 55, $more = null ); ?>
參數(shù)說(shuō)明:
$text(字符串) (必需) 要截取的內(nèi)容,默認(rèn): 無(wú);
$num_words(整數(shù)) (可選) 限定的字?jǐn)?shù),默認(rèn): 55;
$more(字符串) (可選) 截取后加在尾部的字符,默認(rèn): ‘…’
示例說(shuō)明:
<?php $content = get_the_content(); $trimmed_content = wp_trim_words( $content, 30, '<a href="'. get_permalink() .'"> ...閱讀更多</a>' ); echo $trimmed_content; ?>
注:可以修改上面的數(shù)字30來(lái)設(shè)定長(zhǎng)度。
方法二:使用php函數(shù)mb_strimwidth()截取
mb_strimwidth是超輕量級(jí)的php函數(shù),用來(lái)獲取指定的寬度截?cái)嘧址?/p>
mb_strimwidth()函數(shù)默認(rèn)用法:
mb_strimwidth ( string $str , int $start , int $width [, string $trimmarker [, string $encoding ]] )
參數(shù)說(shuō)明:
$str //指定字符串$start //指定從何處開(kāi)始截取
$width //截取文字的寬度
$trimmarker //超過(guò)
$width數(shù)字后顯示的字符串
示例說(shuō)明:
平時(shí)我們調(diào)用文章標(biāo)題都是這樣:
<?php the_title(); ?>
現(xiàn)在我想控制標(biāo)題的輸出字?jǐn)?shù),只需要使用mb_strimwidth函數(shù)后變成這樣:
<?php echo mb_strimwidth(get_the_title(), 0, 30,"..."); ?>
注:可以修改上面的數(shù)字30來(lái)設(shè)定長(zhǎng)度。
方法三:使用原生函數(shù)customTitle ()截取
將下面的代碼添加到主題的functions.php文件最后一個(gè) ?> 的前面:
function customTitle($limit) {
$title = get_the_title($post->ID);
if(strlen($title) > $limit) {
$title = substr($title, 0, $limit) . '...';
}
echo $title;
}
然后在需要調(diào)用的地方添加下面的代碼即可:
<?php customTitle(30); ?>
注:可以修改上面的數(shù)字30來(lái)設(shè)定長(zhǎng)度。
方法四:使用自定義函數(shù)cut_str ()截取
將下面的代碼添加到主題的functions.php文件最后一個(gè) ?> 的前面:
//標(biāo)題截?cái)?
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;};
然后在需要調(diào)用的地方添加下面的代碼即可:
<?php echo cut_str($post->post_title,30); ?>
注:可以修改上面的數(shù)字30來(lái)設(shè)定長(zhǎng)度。
方法五:使用CSS代碼來(lái)“截取”
其實(shí)這不是截取,而是隱藏了溢出的字符。我們可以在主題CSS文件style.css中對(duì)標(biāo)題所在的選擇器 id 或 class 添加下面的樣式:
.post-title{
width:250px; /* 限制寬度(可選) */
whitewhite-space:nowrap; /* 禁止自動(dòng)換行 */
word-break:keep-all;/* 這個(gè)也是禁止自動(dòng),二選一即可 */
overflow:hidden; /* 隱藏溢出的內(nèi)容 */
text-overflow:ellipsis; /* 溢出文本使用...代替 */
}
總結(jié)
文中分享的五種方法都可以實(shí)現(xiàn)自動(dòng)截取WordPress文章的內(nèi)容、摘要和標(biāo)題字?jǐn)?shù),至于那個(gè)方法比較好用就是仁者見(jiàn)仁智者見(jiàn)智了,boke112在使用的過(guò)程中都是結(jié)合幾種方法來(lái)使用的,比如同時(shí)使用方法二、四、五,有些地方可能是用方法二,有些地方可能是用方法五,關(guān)鍵還是看自己喜歡吧。
歷史上的今天:
本文鏈接地址:http://www.cnidcc.cn/wp_trim_words.html , 轉(zhuǎn)載請(qǐng)保留本說(shuō)明!

川公網(wǎng)安備 51011202000104號(hào)
大神都是這么做的。辛苦了。
SEO不需要插件了?
java中用截取字符串解決這個(gè)問(wèn)題
五種方法,博主不怕練功走火入魔啊。
萬(wàn)惡意淫為首,百善回帖為先
感謝樓主的分享,贊贊。
朋友,交換鏈接嗎?
完全看不懂 請(qǐng)問(wèn)WP默認(rèn)主題如果文章內(nèi)容字?jǐn)?shù)很多的話(huà) 首頁(yè)也是會(huì)全部顯示的 請(qǐng)問(wèn)怎么截取部分呢?親賜教,謝謝!
已經(jīng)解決了 在文章需要截?cái)嗵幪砑印癿ore”標(biāo)簽即可
@Clovers: 這個(gè)倒是簡(jiǎn)單。我這邊的話(huà),是用的
< ?php echo deel_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)) , 0, 150, '...'); ?>