如何停用WordPress內建搜尋功能?

由於WordPress是一套部落格套裝架站程式,通常這種程式都會有內建的搜尋功能,不然文章這麼多,如果要找其中一篇怎麼找呢?但有些人並不希望開放站內搜尋,可能想要節省主機資訊,因為只要有人大量搜尋,就會加重伺服器的負擔,它們會想要改用Google自訂搜尋功能,利用外部資源來節省網站資源,讓伺服器負擔輕一些。

使用Google自訂搜尋好處在於可以節省主機資源,因為搜尋就是去撈Google伺服器內儲存的資料,並非直接針對WordPress資料庫進行存取的,使用外部資源來整合網站,是一個蠻不錯的方式,而且Google本身就是搜尋引擎起家,搜尋的精準度想必會比內建搜尋更精準,不妨改用Google搜尋來取代WordPress內建搜尋呢?


如果你有善用本站右上角的搜尋引擎,你會發現他是Google的耶!因為香腸很早就將搜尋功能交付給Google了,如果你也想改用Google的話可以參考自訂搜尋教學,或是透過外掛此用來擁有Google搜尋功能。但值得注意的是,如果你的網站被Google收錄不多,或者是網站太新,那麼用Google搜尋取代內建搜尋並不是一個明智的選擇喔!倘若Google抓你網站資料抓不夠多,相對的使用Google搜尋來替代站內,當訪客搜索時可能也找不到資料,但當你收錄夠多,那用這個替代,可以減輕系統負擔資源。(抓不夠多,可以用Google Webmaster來讓Google收錄更多)

但話說回來,一般使用者或許認為要停用內建搜尋,不就是讓網站的每一個角落不要出現WordPress的搜尋框不就好了,但這樣的講法只對一半,就算你把搜尋框拿掉,但是如果熟悉WordPress的使用者應該不能發現,其實搜尋都是有帶一個參數,只要他自己直接下參數,同樣也可以使用到內建搜尋,因此接下來我們可以透過語法,完完全全將此功能關閉,停用的好處就是避免被濫用MySQL的Query而造成主機負擔過重。
如何停用WordPress內建搜尋功能?

〈▲ 如果沒有停用,可以透過「s」這個參數去搜尋〉

停用WordPess內建搜尋

修改方式請您開啟當前佈景主題的functions.php,在適當的位置加入以下語法就可以完全停用WordPress內建搜尋功能,可避免其他人去Try內建的搜尋功能。

在語法的Error的處理部分,如果你將他設為true,那麼佈景主題內必須要有404.php頁面才可以,因為如果使用者去Try內建搜尋功能,才會被導到404頁面。如果使用falsle,那麼將會停留到他當前在Try的頁面囉!

/** Disable WordPress Search **/
function fb_filter_query( $query, $error = true ){
  if ( is_search() ) {
   $query->is_search = false;
   $query->query_vars[s] = false;
   $query->query[s] = false;

  // to error
  if ( $error == true )
   $query->is_404 = true;

  }
}
add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

停用之後會發生什麼事情呢?如同前面提到,如果設定為true,則顯示404.php的頁面,如果設定為false則停留在原始頁面,上面語法是設定true,所以是顯示404頁面囉!

如何停用WordPress內建搜尋功能?