其實(shí)我個(gè)人并不是很喜歡這種摘要的顯示方式,但是這個(gè)方法用起來(lái)比較方便而已。
WordPress是有摘要功能的,寫文章的時(shí)候填寫一些摘要是一個(gè)很好的習(xí)慣,我主題設(shè)置摘要給搜索引擎看的。
不過(guò)并不是很多人在發(fā)表文章的時(shí)候填寫這個(gè)摘要,所以我也一直糾結(jié)是否在主題設(shè)計(jì)的時(shí)候首選使用摘要模式。
網(wǎng)上使用摘要的代碼大多是這樣的
<?php if(!is_single()) {
the_excerpt();
} else {
the_content(__('(more...)'));
} ?>
首選顯示摘要,如果沒(méi)有摘要?jiǎng)t顯示全部文章,話說(shuō)顯示全部文章肯定是不給力的,萬(wàn)一一篇文章很長(zhǎng)怎么辦,首頁(yè)能放幾篇文章?
今天看到一篇很好的文章,解決了這一問(wèn)題,文章想到了我所想要的,非常不錯(cuò)。較完美的WordPress文章摘要(截?cái)?方案
首先顯示摘要,如果沒(méi)有摘要的則顯示用more標(biāo)簽截?cái)嗟模绻麤](méi)有more標(biāo)簽則顯示文章截取多少字的,如果主機(jī)不支持mb_strimwidth函數(shù)截?cái)啵瑒t才顯示全文。
大家覺(jué)得這種顯示方法怎么樣,如果大家覺(jué)得OK,我新版的主題將使用這個(gè)作為首頁(yè)文章摘要了。
<?php //這是為了在單篇文章(或頁(yè)面)直接顯示全部?jī)?nèi)容,而不使用以下的判斷
if(is_singular()){the_content();}else{
//定義兩個(gè)$
$pc=$post->post_content;
$st=strip_tags(apply_filters('the_content',$pc));
//判斷是否存在 內(nèi)置摘要
if(has_excerpt())
the_excerpt();
/*使用正則表達(dá)式嘗試匹配more標(biāo)簽,
并判斷如果存在more標(biāo)簽, 或者正文內(nèi)容長(zhǎng)度小于300, 則直接以more標(biāo)簽方式顯示,
即是說(shuō), 有more便顯示more, 沒(méi)more且長(zhǎng)度小于300則直接顯示全文.
我使用了mb_strwidth來(lái)判斷長(zhǎng)度.
*/
elseif(preg_match('/<!--more.*?-->/',$pc) || mb_strwidth($st)<300)
the_content('Read more »');
//否則...以下
elseif(function_exists('mb_strimwidth'))//判斷是否支持mb_strimwidth函數(shù)
echo'<p>'//mb_strimwidth截?cái)嗪蟮玫降氖羌兾谋? 所以我給它包了一層 p
.mb_strimwidth($st,0,300,' ...')//對(duì)文本內(nèi)容截?cái)? 從位置0開(kāi)始往后截取300長(zhǎng)度, 超出部分以點(diǎn)點(diǎn)點(diǎn)替代
.'</p><p class="read-more"><a title="'//給截?cái)嗟膬?nèi)容添加一個(gè)與 STEP 1 完全一模一樣的"more標(biāo)簽"...
.the_title("繼續(xù)閱讀: ","",false)//注意這里與 STEP 1 相比, 使用了另一個(gè)函數(shù)來(lái)獲取標(biāo)題
.'" rel="nofollow" href="'
.post_permalink()
.'" class="more-link">Read more »</a></p>';
else the_content();//最后沒(méi)有選擇的選擇...
}?>