2024国产成人精品免费视频|日本免费一区二区三区毛片|久久97超碰色中文字幕|亚洲天堂a中文字幕

詳解讓WordPress實現(xiàn)列表頁先顯示置頂文章的解決方案

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

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

xxx

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

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

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

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

//把$args改成,實際上就為了加個約束最新的5條才顯示出來
$args=array('cat' => $catarr,'post__in' => get_option('sticky_posts'),'showposts' => 5);
//然后在$args2前加上,依次獲得將被顯示出來的這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;

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

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

我們在微信上24小時期待你的聲音

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

轉(zhuǎn)載請注明出處:詳解讓WordPress實現(xiàn)列表頁先顯示置頂文章的解決方案 - 微構(gòu)網(wǎng)絡(luò)
分享:
乳山市| 宁明县| 卓资县| 孙吴县| 荃湾区| 南乐县| 满洲里市| 枝江市| 岫岩| 乳山市| 永顺县| 石嘴山市| 买车| 金寨县| 溧水县| 安仁县| 台江县| 察隅县| 瓦房店市| 南江县| 襄樊市| 湖州市| 收藏| 嘉黎县| 华容县| 贵溪市| 竹北市| 萍乡市| 永兴县| 水富县| 巩义市| 论坛| 恭城| 义马市| 武隆县| 通州区| 三原县| 桦南县| 会东县| 古浪县| 香格里拉县|