国产又猛又爽又黄视频|在线观看人成视频免费|少妇高潮太爽了在线视频|911国产免费无码专区|特黄做受又大又粗又长大片|欧美一级二级免费在线观看|日日夜人人澡人人澡人人看免|欧洲午夜精品一级毛片在线播放

詳解讓W(xué)ordPress實(shí)現(xiàn)列表頁(yè)先顯示置頂文章的解決方案

2015-09-11 13:56 欄目:技術(shù)開發(fā) 查看(12922)

至于WordPress是什么?大家不知道的可以百度、谷歌去補(bǔ)腦。而關(guān)于我對(duì)WordPress的描述,大家可以參考《完善的解決方案實(shí)現(xiàn)WordPress讓聚合模塊優(yōu)先顯示置頂文章》這篇文章,而其實(shí)現(xiàn)在的這篇文章跟篇文章是類似的,都是關(guān)于置頂?shù)?,只是那篇是關(guān)于聚合模塊的,而這里是列表頁(yè)面的。如下圖:

xxx

因此,關(guān)于文章中需要的一些廢話大家也可以參考我上面的那篇文章,我們就不需要重復(fù)了。我們的需求是:在WordPress的分類列表中先把置頂?shù)奈恼嘛@示出來(lái),然后再顯示普通的文章(不包含置頂?shù)模?dāng)然一般來(lái)講我們不希望除第一位外的其他頁(yè)面還顯示置頂?shù)奈恼?,此外還有就是我們要考慮子分類進(jìn)來(lái)。下面就直接貼出代碼來(lái),在代碼中詳細(xì)說(shuō)明吧,下面是實(shí)現(xiàn)該需求的核心代碼:

/*
預(yù)處理工作:獲得當(dāng)前分類的ID,如果它有子分類就同時(shí)獲得她所有的子分類ID
如果這步不做,那么就會(huì)出現(xiàn)問(wèn)題,比如ID=1下面有ID為2、3、5,那么當(dāng)我們打開父分類ID=1時(shí)將沒(méi)有數(shù)據(jù)顯示。
*/
//創(chuàng)建一個(gè)數(shù)組catarr,它就是包含所有的ID號(hào)的
$catarr=array();
//首先,把自己放進(jìn)去
$catarr[]=$cat;
//獲取當(dāng)前分類子分類信息
$categories = get_categories('child_of='.$cat);
//循環(huán)上述資源,依次把子分類ID放入數(shù)組(如果有)
foreach($categories as $value){
$catarr[]=$value->term_id;
/*
顯示置頂信息開始---
*/
//條件依次為所屬指定的分類(當(dāng)前及其子類)、置頂?shù)?
$args=array('cat' => $catarr,'post__in' => get_option('sticky_posts'));
query_posts($args);
//if是為了讓只有第一頁(yè)顯示置頂?shù)?,?dāng)然這個(gè)if可以放在其他的位置,放在最開始都可以,也就是到了第二頁(yè)以后我們這篇文章都不需要了,因?yàn)椴恢庙斄?,哈?
if($paged==0) :while(have_posts()) : the_post();
//輸出html等內(nèi)容....
endwhile;wp_reset_query();endif;
/*
普通文章開始---
*/
//循環(huán)走起來(lái),注意這里加了一個(gè)continue,就是忽略掉置頂?shù)?
if ( have_posts() ) : while(have_posts()) : the_post();
if(is_sticky()) : continue; endif;
//輸出html等內(nèi)容....
endwhile;wp_reset_query();endif;

上面的需求是一開始顯示所有的置頂文章,如果一個(gè)網(wǎng)站運(yùn)營(yíng)了好幾年了,那么這一個(gè)分類及其子分類可能就已經(jīng)有了很多的置頂文章。如果我們想在列表中只顯示有限的幾條(比如5條),這樣就可以避免太多置頂?shù)淖層脩舾杏X(jué)網(wǎng)站沒(méi)更新一樣。過(guò)去WordPress默認(rèn)的置頂,大家的做法可能是一個(gè)置頂一段時(shí)間后取消。

為了運(yùn)營(yíng)更加方便,現(xiàn)在加一個(gè)需求,就是只把最新的幾條數(shù)據(jù)置頂顯示,其他的置頂文章在列表中顯示跟普通文章一樣的。這個(gè)時(shí)候我們只需要稍微修改上面的核心代碼即可。

//把$args改成,實(shí)際上就為了加個(gè)約束最新的5條才顯示出來(lái)
$args=array('cat' => $catarr,'post__in' => get_option('sticky_posts'),'showposts' => 5);
//然后在$args2前加上,依次獲得將被顯示出來(lái)的這5條置頂文章的ID,并一次送入數(shù)組$dingarr。
$dingarr=array();
$ding=query_posts($args);
foreach($ding as $value){
   $dingarr[]=$value->ID;
}
//把continue的條件換一下
if(in_array($post->ID,$dingarr)) : continue; endif;

實(shí)際上上面用continue來(lái)跳開置頂?shù)?,可以說(shuō)基本上解決了我們所需要的,但其實(shí)不是極其完美的。而如果使用query_posts()、WP_Query()來(lái)就需要考慮分頁(yè)等問(wèn)題,就相對(duì)來(lái)復(fù)雜了;我個(gè)人在本次項(xiàng)目中采用的是continue語(yǔ)句,可以說(shuō)我要的需求實(shí)現(xiàn)了,但在一些極端需求下是需要進(jìn)一步處理的,比如每頁(yè)顯示20條,第二頁(yè)有10條被置頂了,那么第二頁(yè)就只顯示剩下的10條了(當(dāng)然這是非常極端的,誰(shuí)沒(méi)事置頂那么多,就算置頂這么多一般說(shuō)明有了很多數(shù)據(jù),也很難集中在某一頁(yè))。

與我們的項(xiàng)目經(jīng)理聯(lián)系
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請(qǐng)注明出處:詳解讓W(xué)ordPress實(shí)現(xiàn)列表頁(yè)先顯示置頂文章的解決方案 - 微構(gòu)網(wǎng)絡(luò)
分享:
標(biāo)簽: