国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > Wordpress > 正文

wordpress文章置頂不改變文章排序實現方法

2024-09-07 00:50:20
字體:
來源:轉載
供稿:網友

wordpress博客系統中如果我們文章置頂那么文章置頂的文章排序會發生變化,那么我希望實現的功能是文章置頂不改變文章排序了,下面我找到一站長寫的方法現在分享給各位.

文章置頂不排序,query_posts方法的代碼如下:

  1. <?php 
  2. $display_categories = get_option(‘swt_cat_exclude’); 
  3. $limit = get_option(‘posts_per_page’); 
  4. $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1; 
  5. $sticky = get_option(‘sticky_posts’); 
  6. $args = array
  7. ‘cat’ =–> $display_categories
  8. ‘showposts’ => $limit=11, 
  9. //忽略sticky_posts,即不置頂(不將置頂文章提至最前),但是輸出置頂文章 
  10. ‘ignore_sticky_posts’ => 1, 
  11. //排除置頂文章,不輸出置頂文章。這一句和上一句只留一句即可,根據自己需要處理 
  12. ‘post__not_in’ => $sticky
  13. ‘paged’ => $paged 
  14. ); 
  15. query_posts($args); 
  16. if (have_posts()) : 
  17. while (have_posts()) : the_post(); 
  18. /* 此處自行添加輸出內容,如標題、日期、作者、摘要等 */ 
  19. endwhile
  20. endif
  21. ?> 

這段代碼是在網上找到的一段處理與過濾置頂文章的辦法,但是會導致之前說的搜索、標簽、分類頁面只顯示首頁內容的問題,為了解決這個問題,向數組內加入了s、tag等查詢條件,雖然能夠正常的查詢到標簽頁與搜索頁的內容,但是又會導致分類頁出現問題,因此只能另尋他法,

仔細的查閱wordpress的方法說明,發現query_posts方法可以通過全局變量$query_string來設置查詢過濾,并且不影響其他的查詢結果,代碼如下:

  1. global $query_string
  2. query_posts( $query_string . ‘&ignore_sticky_posts=1′ ); 

設置顯示/不顯示置頂文章

在默認主題下,如果將某篇文章設置成置頂后,會將該文章提至首頁文章列表最前顯示,此時,可以添加一個置頂圖標或者一個字眼“[置頂]”作為區別,很簡單,只需在文章標題的代碼附近加上一句代碼即可,用函數is_sticky()判斷是否為置頂文章,如果是的話就加入相應的圖標或者文字,代碼如下:

  1. <?php if(is_sticky()) {echo '<img src="'.get_bloginfo('template_directory').'/images/top.gif" alt="置頂文章" title="置頂文章" />';}  ?> 

如果要求不高的話,這樣也就可以了,已經達到了目的,但是如果你的要求較高,想將置頂文章和普通文章分離開來,想讓置頂文章和普通文章有明顯區別,如置頂文章只顯示標題,而普通文章還要顯示更多的內容,可以用下面的辦法來實現.

首先,將原來的顯示所有文章的代碼稍作調整,讓其不將置頂文章提至最前,但仍然出現在文章列表中,將以下代碼替換到原輸出所有文章代碼的位置,一般在<?php if (have_posts()):while (have_posts()):the_post(); ?>前,注意,以下代碼和原代碼有部分重疊,請將不同的關鍵代碼加入相應的位置即可,主要是有注釋的那兩行,代碼如下:

  1. <?php 
  2.   $display_categories = get_option('swt_cat_exclude'); 
  3.   $limit = get_option('posts_per_page'); 
  4.   $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
  5.   $sticky = get_option('sticky_posts'); 
  6.   $args = array
  7.     'cat' =--> $display_categories
  8.     'showposts' => $limit=11, 
  9.     //忽略sticky_posts,即不置頂(不將置頂文章提至最前),但是輸出置頂文章 
  10.     'ignore_sticky_posts' => 1, 
  11.     //排除置頂文章,不輸出置頂文章。這一句和上一句只留一句即可,根據自己需要處理 
  12.     'post__not_in' => $sticky
  13.     'paged' => $paged 
  14.   ); 
  15.   query_posts($args); 
  16.   if (have_posts()) : 
  17.   while (have_posts()) : the_post(); 
  18.   /* 此處自行添加輸出內容,如標題、日期、作者、摘要等 */ 
  19.   endwhile
  20.   endif
  21. ?> 

然后,在適當位置添加只顯示置頂文章的代碼,一般的話,放在靠前的位置,這樣才能體現出置頂的效果嘛,也就是放在顯示所有文章列表代碼之前,代碼如下:

  1. <?php 
  2.   //獲取所有置頂文章 
  3.   $sticky = get_option('sticky_posts'); 
  4.   //對這些文章排序, 日期最新的在最上 
  5.   rsort($sticky); 
  6.   //獲取5篇文章 
  7.   $sticky = array_slice($sticky, 0, 5); 
  8.   //輸出這些文章 
  9.   query_posts(array('post__in' =--> $sticky'ignore_sticky_posts' => 1)); 
  10.   if (have_posts()) : 
  11.   while (have_posts()) : the_post(); 
  12.   /* 此處自行添加輸出內容,如標題等 */ 
  13.   endwhile
  14.   endif
  15.   //此句十分重要,如果不加,可能會造成一些錯誤,如失去分頁翻頁效果等 
  16.   wp_reset_query(); 
  17. ?> 

這樣的話,基本上已經實現了顯示和不顯示置頂文章的功能.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荃湾区| 军事| 安乡县| 六枝特区| 乐都县| 梓潼县| 尉犁县| 江孜县| 周宁县| 陆良县| 贡觉县| 油尖旺区| 两当县| 大渡口区| 峡江县| 保康县| 建德市| 鸡西市| 会理县| 兰溪市| 原平市| 蒲江县| 普兰县| 江陵县| 长兴县| 衡阳市| 固安县| 平陆县| 蒙阴县| 竹山县| 鸡东县| 长宁区| 太湖县| 台东市| 钟祥市| 大英县| 西林县| 巫溪县| 峨山| 刚察县| 肃南|