2011-01-24 62 views
0

get_posts()WP_Query幾乎適用於所有事情,但有時我想查詢我的所有帖子,只顯示關於它們的非常基本的內容。例如,如果我製作的頁面顯示標題並鏈接到我博客上的每篇文章,則沒有理由查詢這些帖子的內容。如果我有成千上萬個帖子,並且每篇帖子的內容都很大,那麼將所有這些內容存儲在一個php變量中僅僅是爲了獲得這些帖子的標題和固定鏈接將是非常浪費的。但這正是這兩個功能所做的!是否有可能讓get_posts()或WP_Query不返回發佈內容?

我希望能夠做這樣的事情:

$query = array(
    'numberposts' => -1, 
    'exclude_fields' => 'post_content' 
); 
$all_posts = get_posts($query); 

是任何人都知道的方式做到這一點,而無需編寫自定義查詢?

(自定義查詢的缺點 - 它是一個巨大的缺點 - 是,那麼你就不能使用所有的WordPress,例如偉大的現有功能,所有的迴路功能)

回答

1

的唯一途徑我知道是用插件中的過濾器(或主題中的functions.php)重寫SQL查詢。由於您只想要刪除內容,因此您必須創建一種方法,在必要時註冊並從模板文件中刪除此過濾器。

這裏是你會被鉤住到過濾器:

http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_request

小心由不列出列的WordPress希望打破東西,因爲你有一個明確的柱列表替換* 。

一般來說,編寫原始SQL和您需要的少量代碼可能會更容易在少數需要這樣做的地方獲得標題/鏈接/任何內容。

您也可以忽略所有這些,只使用WordPress的內置函數編寫它,並且依賴於您可以緩存頁面並且每天僅浪費一次內存的事實,或者通常您允許緩存爲刷新。

+0

丹,感謝您的出色反應。你剛纔說了我一天中大部分時間都在研究和發現的東西。不幸的是,我並不喜歡這些選項中的任何一個,所以我認爲我只是等待WordPress將其包含在覈心中,同時我會依賴緩存插件。如果我沒有聽到任何其他人的消息,我會將其標記爲正確。 – 2011-01-24 05:12:53

相關問題