2010-06-12 125 views
1

我正在爲wordpress寫一個插件,我想創建自己的搜索。我試圖改變WordPress的搜索,但我正在做的是與SQL查詢非常具體。我正在比較緯度和長度的座標,並基於此獲取帖子。使用WP_Query與自定義SQL在wordpress

我可以通過使用標準wpdb查詢來顯示帖子,但是我沒有得到其他功能,如分頁。我想能夠使用我的SQL語句與WP_Query函數。如果我認爲正確,那麼我應該能夠使用來自$ posts全局變量的分頁和其他功能。

這是對嗎?我搜索了幾個小時,但找不到使用參數選擇類別等插件的任何東西。我只需發送一個完整的SQL命令 - 沒有別的。

非常感謝....

回答

3

你可能不具有最優化的SQL查詢的結束,但如果你要使用的所有帖子ID數組(先用自己的SQL) ,然後使用WP_Query以及參數post__inposts_per_page,WordPress將爲您處理所有事情(包括SQL限制,分頁等)。

+0

感謝您的回覆......這聽起來確實很有效!我唯一的問題(我認爲)是在頁面加載後我正在進行數據庫調用。我使用簡碼加載插件功能,然後執行查詢。我猜如果我將SQL查詢更改爲可以工作的頭函數? – 2010-06-12 12:40:22

+0

您是在一個頁面中使用短代碼,還是在循環內使用短代碼? – TheDeadMedic 2010-06-12 13:04:19

+0

短代碼將在循環內。我創建了一個新頁面,並在內容的主體中放置了[示例]。這個例子然後調用我的函數,它將查詢自定義的SQL – 2010-06-12 13:13:54

0

有一個名爲posts_where_paged的過濾器會爲您提供正在生成的SQL查詢的WHERE部分。修改你的額外需要的SQL比較。這樣您就不會改變WordPress加載頁面的方式,只需更改它從數據庫中檢索的數據即可。

如果您正在提取的數據不在搜索過程中查詢的普通表集中,那麼您還必須更改posts_join_paged過濾器所查看的表。 (至少我認爲這是一個;))

查看wp-includes/query.php的第2376行,查看可用於修改數據庫查詢的過濾器。

1

爲了讓所有人發現這一點,從WordPress 3.1開始,您現在可以使用過濾器直接更改$ wp_query使用的SQL。 See codex for more info.

相關問題