2010-06-11 14 views
1

有沒有一種方法可以覆蓋wordpress中的默認搜索功能?我曾嘗試使用過濾器,但它們只允許添加到查詢中......或者可能使用posts_request重寫整個查詢。如果我覆蓋,但沒有其他查詢將工作。我有以下代碼在wordpress中覆蓋搜索功能(sql和php)

function my_posts_request_filter($input) 
{ 
    if (is_search() && isset($_GET['s'])) { 
     global $wpdb; 
    } 
    return $input; 
} 

add_filter('posts_request','my_posts_request_filter'); 

我可以重寫我的自定義的SQL $輸入,但它顯示最近的帖子頁面上的小工具,如果我這樣做,將不會顯示。有沒有辦法來JUST覆蓋搜索功能?

回答

3

這不是防彈的,但假設第一WP_Query調用對於搜索請求(有可能其中一個插件調用它的WordPress做之前的情景,但不太可能),你可以一次性剝離過濾器該函數運行。

function my_posts_request_filter($input) 
{ 
    if (is_search() && isset($_GET['s'])) { 
     global $wpdb; 

     // do your funky SQL 

     remove_filter('posts_request','my_posts_request_filter'); 
    } 
    return $input; 
} 
+0

非常感謝!這已經完成了。我不認爲你知道這是如何工作的?我用我的自定義SQL重寫了$ input並且工作 - 顯示帖子。但是,它非常具體。我也想做一般的搜索。 (以默認方式搜索單詞) – 2010-06-11 19:57:06

+0

有沒有辦法執行我的自定義SQL,然後執行$ input SQL? – 2010-06-11 19:57:32

+0

對不起馬特,我不太清楚你的意思? – TheDeadMedic 2010-06-12 01:21:54