WordPress自動截取限定數字的摘要

在主題的制作過程中,需要用到自動截取限定字數的文章摘要,雖然,有些人使用 more 標簽來截取,也有些人會自己給每篇文章填寫摘要,然後使用 the_excerpt() 函數輸出, 但並不是所有的朋友都有這些習慣。而且,他們自己截取的摘要,可能超過瞭主題的樣式限制,比如下圖,摘要的字數太多,超出瞭主題樣式的設置,看上去很不爽。

wpdaxue.com-201210102

所以,做大眾主題的我們,需要自動截取限定字數的摘要,滿足自己設置樣式的需要。

WordPress 3.3 新增瞭一個 wp_trim_words() 函數,專門用來截取限定字數的內容,比如文章、摘要、標題等,使用方法請看:

https://www.wpdaxue.com/wp_trim_words.html

===============不再推薦下面的方法========================

除瞭外掛以外,用得比較多的是下面的代碼,是使用php本身的 mb_strimwidth 函數實現的,在需要顯示摘要的地方使用下面的代碼:

1
<?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 200,"..."); ?>

<?php echo mb_strimwidth(strip_tags(apply_filters(‘the_content’, $post->post_content)), 0, 200,"…"); ?>

上面的數字 200,可以根據自己的需要來修改。

但是,如果有些主機空間不支援 mb_strimwidth 函數怎麼辦?那可以使用下面的方法實現效果。

在主題的 functions.php 文件最後一個 ?> 前面添加下面的函數

1
2
3
4
5
//摘要截斷
function dm_strimwidth($str ,$start , $width ,$trimmarker ){
$output = preg_replace('/^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,'.$start.'}((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,'.$width.'}).*/s','1',$str);
return $output.$trimmarker;
}

//摘要截斷
function dm_strimwidth($str ,$start , $width ,$trimmarker ){
$output = preg_replace(‘/^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,’.$start.’}((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,’.$width.’}).*/s’,’1′,$str);
return $output.$trimmarker;
}

然後在需要顯示摘要的地方使用下面的代碼調用即可:

1
<?php echo dm_strimwidth(strip_tags($post->post_content),0,200,"..."); ?>

<?php echo dm_strimwidth(strip_tags($post->post_content),0,200,"…"); ?>

同樣,上面的 200 ,也可以根據自己的需要修改。

如果你有更加完美的實現代碼,歡迎留言與我們交流。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *