- 原文來(lái)源:詳情
方法一:
使用WP內(nèi)置函數(shù)wp_trim_words()截取
WordPress內(nèi)置的wp_trim_words()函數(shù),專門用來(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;?/*?溢出文本使用...代替?*/ }
Boke112使用心得:
文中分享的五種方法都可以實(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)鍵還是看自己喜歡吧。
拓展思路:
參考來(lái)源:詳情
wordpress 內(nèi)置函數(shù) the_excerpt() 是個(gè)使用頻率較高的函數(shù),它是用來(lái)獲取當(dāng)前文章摘要的,以[…]結(jié)尾,如果在文章中沒(méi)有編輯內(nèi)容摘要字段,則默認(rèn)截取文章的前55個(gè)字的內(nèi)容,默認(rèn)截取的字段去掉HTML標(biāo)簽和圖形,并且一定要在循環(huán)內(nèi)使用。
the_excerpt() 函數(shù)使用的方法也非常簡(jiǎn)單,用法如下:
這個(gè)標(biāo)簽沒(méi)有任何的參數(shù),直接使用即可,但函數(shù)默認(rèn)的設(shè)置有時(shí)候并不能滿足用戶的需要,比如國(guó)內(nèi)用戶以 以[…]結(jié)尾就很不習(xí)慣,另外截取前 55 個(gè)字符有時(shí)候會(huì)太少了,還有文章摘要的結(jié)尾是不是我們可以自定義加個(gè)更多的鏈接呢,這些自定義只需要在主題 functions.php 文件中加入相應(yīng)的代碼就可以了,下面夏日博客教大家如何進(jìn)行更自定義 wordpress 文章摘要的內(nèi)容。
控制摘要的字?jǐn)?shù):
/*控制摘要字?jǐn)?shù)*/ function?new_excerpt_length($length) { return?150; } add_filter("excerpt_length",?"new_excerpt_length");
return 150 是返回的字符了,兩個(gè)字符一個(gè)漢字,這個(gè)可以根據(jù)自己的需要進(jìn)行設(shè)置。
更改摘要末尾的默認(rèn)顯示樣式:
function?new_excerpt_more($excerpt) { return?str_replace("[...]",?"...",?$excerpt); } add_filter("wp_trim_excerpt",?"new_excerpt_more");
the_excerpt() 函數(shù)默認(rèn)是以[…]結(jié)尾的,這里我們利用 php 的替換函數(shù) str_replace 將其替換成 …,也可以改成你自己想要的符號(hào)。
添加自定義結(jié)尾:
function?new_excerpt_more($more) { global?$post; return?" ID) . "">閱讀更多"; } add_filter("excerpt_more",?"new_excerpt_more");
在文章摘要的未端添加一個(gè) 閱讀更多 的鏈接,這樣看起來(lái)更符合用戶的閱讀習(xí)慣了,閱讀更多可以改成自己想要的內(nèi)容。
上面的代碼均添加到主題 functions.php 文件中即可,另外,the_excerpt() 函數(shù)只能用在循環(huán)體內(nèi),否則的話會(huì)出現(xiàn)錯(cuò)誤。