有個插件名字叫 Limit Posts Automatically,可以統一截斷首頁的文章輸出。我以前用過,但是後來覺得為了一個小功能引入那麼大的插件,不太合算,所以自己研究了一下這方面的 PHP 函數。
! c6 f3 ]4 N0 E8 X, t/ D2 e* I* X; S h2 b
最終被我找到的函數是 mb_strimwidth()。它能滿足的需求有:正確截斷,無亂碼,每條截取內容的長度基本相等。$ Y1 _. K3 \- b; H
6 j2 c: d$ L' y' g0 L
先簡單介紹一下。mb_strimwidth() 會根據"寬度"來截取文字,全角字符寬度為2,半角字符為 1,只要我們將截斷的寬度設置為偶數,那最後截斷輸出的內容一定不會有亂碼。, |: F( X, a/ Y' ]+ {
' e: ?7 v" E* e" ?4 w( m* ]在截斷輸出首頁文章內容的問題上,我們還應該搭配 strip_tags() 來共同實現。strip_tags() 的作用是清除字符串內的 html 標籤,放在這裡就是清除輸出的內容格式(包括清除圖片)。既然目的是截取小段文字,自然也不需講求格式。
! f! y8 y3 Q: @5 Y6 `& G- {! u: v0 |! {- g+ S
廢話打住,說"正題":
5 t$ V2 x# I9 x5 ?4 q4 m! g; b; g) M0 `4 u7 ` X; |
請找到模板內 index.php 中的# e7 l$ o; B( f+ Z# C: w
4 G5 t4 p/ _% S( y" n0 E! I& b) C% m
! O" _" E9 F A, L7 \
. b$ |" i' \# S3 v1 |; b6 q
將其替換為7 J0 s4 q! v ?2 m9 y( }9 p) i
' \3 ~0 @& G: y' G( n: _) \7 t <?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 120,"......"); ?> $ o6 q# T; m: T' t, `
之後首頁文章內容截斷輸出就實現了。更改截取字數請調整例子中的 "120" 為你想要的數值,它後面的 "......" 是輸出末尾的替換內容,款式參考我的首頁。這六個點也算在 120 之內,占 6 個半角寬度。, J6 d7 K* L( v6 d
5 }7 s* h0 q! _: o6 V( ~5 S. t+ l" g如果有看我前面對 mb_strimwidth 的介紹,聰明人該知道怎麼將他們用在 Wordpress 模板側邊欄,畢竟在 css3 普及之前,用 PHP 的截斷方式肯定是最佳的側邊欄截斷選擇。 |