2010-11-12 71 views
2

場景:我在側邊欄中創建可摺疊面板,並顯示所有類別作爲DIV和所有帖子鏈接在這些類別DIV中。夠簡單。我通過get_categories('orderby=name&order=ASC')獲得了所有類別,現在循環遍歷每個類別以獲得每個類別中的所有帖子。Wordpress獲得帖子沒有內容(以減少開銷)

問題:代碼get_posts('nopaging=1&category='.$category->cat_ID)給我所有的職位,但有content和其他東西。所有,我想要的是帖子的固定鏈接。而已。因此,我認爲使用get_posts將會產生很大的開銷,因爲在20個類別中有大約1000個帖子。

解決方案:一個函數或一段代碼,可以讓我把所有的帖子都放在一個帶有永久鏈接的類別中,沒有其他東西,尤其是內容,因爲它是最大的開銷。

回答

4

考慮使用自定義查詢到準確提取你想要什麼:http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query

您可能還需要使用wp_reset_query()您與您的自定義通話結束後,因爲選擇查詢可以是一個有趣的疑難雜症在wordpress當事情開始互相覆蓋時:http://codex.wordpress.org/Function_Reference/wp_reset_query

在您的評論後編輯:您需要使用wp_term_relationships和wp_posts之間的連接,甚至可能使用wp_term_taxonomy進行3方向連接以獲得更好的度量。

說實話,我什至不打擾 - 這是很多工作,沒有太多的好處。 1000條記錄實際上並不多,而且Wordpress已經在wp_posts上使用索引來優化其查詢。通過使用wp super cache插件爲訪問者生成靜態HTML文件(http://wordpress.org/extend/plugins/wp-super-cache/),您可能會獲得更好的結果,而不是通過從選擇中刪除少量列來複制核心WP查詢。

+0

感謝。你能告訴我應該寫什麼查詢嗎? 'SELECT ID,post_title FROM posts WHERE .......''。什麼應該是類別的where子句,即'where category_id = 1'。應該在那裏? – WhatIsOpenID 2010-11-12 15:36:30

+1

我已經更新了我的答案,因爲經過一些反思後,我不認爲這種方法是一個很好的方法。這當然是可能的,但它過於複雜,我認爲這些好處並不能彌補這種複雜性。 – hollsk 2010-11-12 16:09:02