WORDPRESS自定義文章列表顯示


最近還在搗鼓wordpress主題,在露兜博客 里看到了query_posts用法匯總,收藏過來備用… 基本可以通過query_posts函數可以實現隨機閱讀、評論最多和標題排序就等功能吧~ 基本用法: 首先介紹一下如何使用query_posts函數。在主題目錄下找到存檔頁面文件,存檔頁面包括index.php、archive.php等,一般分類頁、標簽頁、日期頁和作者頁等都是用archive.php。 確定了你要控制哪個頁面的文章列表,那么我們就可以開始了,比如你想讓首頁的文章按評論數排序,那么index.php中的代碼基本框架就是這樣的: 其實你要做的就是在index.php中查找if (have_posts())或while (have_posts()),在前面添加query_posts函數即可。不過以上方式可能會導致首頁無法分頁,那你可以將query_posts函數改成這樣的行式: // 下面這一行代碼是必須的,不然你的首頁不能分頁 $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1; $args = array( // 這里以下面的方式添加query_posts參數,具體參數可以參加官方文檔 ‘orderby’ => comment_count, ‘paged’ => $paged ); query_posts($args); 下面是一些常見的query_posts函數用法,你可以直接用到你的主題中。 一、只顯示含有某個自定義字段的文章 1、打開WordPress當前主題目錄,打開index.php,搜索代碼: while (have_posts()) 將其替換成: $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1; $args=array( ‘meta_key’ => ‘sort’, ‘orderby’ => meta_value, ‘paged’ => $paged, ‘order’ => DESC ); query_posts($args); while (have_posts()) 接着搜索: endwhile; 將其改成: endwhile;wp_reset_query(); 2、給之前發表的所有文章添加自定義字段(或者稱作自定義欄目,在文章編輯頁底部可以看到),名稱為 sort ,值填數字。這樣在首頁,文章的排列順序就按照sort字段的值,從大到小排列了。通過修改sort字段的值,可以達到自定義文章排列順序的目的。 3、需要注意的是,通過以上修改后,你必須給所有文章添加自定義字段sort,否則沒有添加sort字段的文章將無法在首頁顯示。這也許就是手動排序需要付出的代價吧,要不然何謂手動? 4、如果你同時想手動修改標簽頁、分類頁等存檔頁面的文章排列順序,同樣可以按照第一步介紹的方法來操作,修改主題目錄下的archive.php等。 二、怎樣讓某分類的文章不顯示/顯示 如果你不想讓某分類的文章出現在主循環中,那么你可以使用query_posts添加參數category__not_in即可: $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1; $args = array( // 2, 6就是你不想顯示的分類ID,多個用半角逗號隔開 ‘category__not_in’ => array(2, 6), ‘paged’ => $paged ); query_posts($args); 如果只想讓顯示某個分類的文章,可以將category__not_in改成category__in。同理,如果不顯示某標簽下的文章,可以將category__not_in改成:tag__not_in,或者只想讓顯示某個標簽下的文章,可以將category__not_in改成tag__in,后面跟着標簽的ID即可。 三、如何對文章進行排序 $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1; $args = array( // 以下代碼中的title就是orderby的值,按標題排序 ‘orderby’ => title, ‘paged’ => $paged ); query_posts($args); 根據orderby的值不同,可以讓文章按照很多種方式進行排序,下面是列舉幾個常見的值及其對應的排序方式:title:按標題;date:按發布日期;modified:按修改時間;ID:按文章ID;rand:隨機排序;comment_count:按評論數 四、只顯示相應ID的文章 如我只想顯示ID為2,4,6的文章,可以使用以下代碼: $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1; $args = array( // 以下代碼中的2,4,6就是文章的ID ‘post__in’ => array(2,4,6), ‘paged’ => $paged ); query_posts($args); 如果不想顯示2,4,6這幾篇文章,可以將 post__in 改成 post__not_in 。另外如果只想顯示置頂文章,那么可以將array(2,4,6)改成get_option(‘sticky_posts’),這段代碼會自動給你填充所有置頂文章的ID。 五、讓置頂文章不置頂 如果你不想讓置頂文章顯示在頂部,而是讓它們安裝正常的順序排列,那么可以使用以下代碼: $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1; $args=array( ‘paged’ => $paged, ‘caller_get_posts’ => 1 ); query_posts($args); 六、列出所有狀態的文章 WordPress的文章狀態有很多種,包括已發布、草稿、已刪除、私人的、定時發布的等等,如果你想將這些文章都統統顯示出來,那么可以這樣: $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1; $args = array( ‘post_status’ => array(‘publish’, ‘pending’, ‘draft’, ‘future’, ‘private’, ‘trash’), ‘paged’ => $paged ); query_posts($args); post_status參數可以控制具體的文章狀態,值包括pending(待審)、publish(已發布)、draft(草稿), future(定時), private(私有), trash(已刪除)。 七、控制文章的數量 如果你想控制要顯示的文章數量,可以使用showposts參數: $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1; $args = array( // 控制只顯示10篇文章,如果將10改成-1將顯示所有文章 ‘showposts’ => 10, ‘paged’ => $paged ); query_posts($args); 最后… 如果你只是想控制首頁、分類頁等每各分頁顯示的文章數量,可以在WordPress管理后台 – 設置 – 閱讀那里設置博客頁面至多顯示多少篇文章。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM