- 原文來源:詳情
方法一:
使用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;?/*?溢出文本使用...代替?*/ }
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() 函數只能用在循環體內,否則的話會出現錯誤。