有個插件名字叫 Limit Posts Automatically,可以統一截斷首頁的文章輸出。我以前用過,但是後來覺得為了一個小功能引入那麼大的插件,不太合算,所以自己研究了一下這方面的 PHP 函數。
6 @1 \7 k, m, _( v, k7 W/ {/ @2 B% G9 Y* t& m
最終被我找到的函數是 mb_strimwidth()。它能滿足的需求有:正確截斷,無亂碼,每條截取內容的長度基本相等。
, i- b, s3 A! ~, v9 B" V$ M6 |/ D q* a) Q
先簡單介紹一下。mb_strimwidth() 會根據"寬度"來截取文字,全角字符寬度為2,半角字符為 1,只要我們將截斷的寬度設置為偶數,那最後截斷輸出的內容一定不會有亂碼。* k+ N4 R" }2 s; _' B! b# c& R) C
: |; H" ~- l8 G5 |6 P
在截斷輸出首頁文章內容的問題上,我們還應該搭配 strip_tags() 來共同實現。strip_tags() 的作用是清除字符串內的 html 標籤,放在這裡就是清除輸出的內容格式(包括清除圖片)。既然目的是截取小段文字,自然也不需講求格式。
- l& |, x: q( b1 C' E+ s
# G* Q2 Z3 P/ E) V* D6 S廢話打住,說"正題":
" {& r s6 `! m2 Q2 g+ t* D4 {5 R+ g* o
請找到模板內 index.php 中的; D5 Q" _! R$ y# b
Y- p5 u5 g& s5 X% O& O 6 o: {, {/ J" n3 x8 P- Z, C' e
* d4 R# C( y! t
將其替換為
' M( E4 ?# B4 s2 H% {3 P9 |2 R, P0 V) I# |& r1 x+ e7 c
<?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 120,"......"); ?> 9 p1 k" _0 \+ E
之後首頁文章內容截斷輸出就實現了。更改截取字數請調整例子中的 "120" 為你想要的數值,它後面的 "......" 是輸出末尾的替換內容,款式參考我的首頁。這六個點也算在 120 之內,占 6 個半角寬度。
3 u% a! |, V# e: G8 {$ n/ e# i( I( d. ?( N2 B# l7 E
如果有看我前面對 mb_strimwidth 的介紹,聰明人該知道怎麼將他們用在 Wordpress 模板側邊欄,畢竟在 css3 普及之前,用 PHP 的截斷方式肯定是最佳的側邊欄截斷選擇。 |