由於WordPress是一套部落格套裝架站程式,通常這種程式都會有內建的搜尋功能,不然文章這麼多,如果要找其中一篇怎麼找呢?但有些人並不希望開放站內搜尋,可能想要節省主機資訊,因為只要有人大量搜尋,就會加重伺服器的負擔,它們會想要改用Google自訂搜尋功能,利用外部資源來節省網站資源,讓伺服器負擔輕一些。
使用Google自訂搜尋好處在於可以節省主機資源,因為搜尋就是去撈Google伺服器內儲存的資料,並非直接針對WordPress資料庫進行存取的,使用外部資源來整合網站,是一個蠻不錯的方式,而且Google本身就是搜尋引擎起家,搜尋的精準度想必會比內建搜尋更精準,不妨改用Google搜尋來取代WordPress內建搜尋呢?
如果你有善用本站右上角的搜尋引擎,你會發現他是Google的耶!因為香腸很早就將搜尋功能交付給Google了,如果你也想改用Google的話可以參考自訂搜尋教學,或是透過外掛此用來擁有Google搜尋功能。但值得注意的是,如果你的網站被Google收錄不多,或者是網站太新,那麼用Google搜尋取代內建搜尋並不是一個明智的選擇喔!倘若Google抓你網站資料抓不夠多,相對的使用Google搜尋來替代站內,當訪客搜索時可能也找不到資料,但當你收錄夠多,那用這個替代,可以減輕系統負擔資源。(抓不夠多,可以用Google Webmaster來讓Google收錄更多)
但話說回來,一般使用者或許認為要停用內建搜尋,不就是讓網站的每一個角落不要出現WordPress的搜尋框不就好了,但這樣的講法只對一半,就算你把搜尋框拿掉,但是如果熟悉WordPress的使用者應該不能發現,其實搜尋都是有帶一個參數,只要他自己直接下參數,同樣也可以使用到內建搜尋,因此接下來我們可以透過語法,完完全全將此功能關閉,停用的好處就是避免被濫用MySQL的Query而造成主機負擔過重。
〈▲ 如果沒有停用,可以透過「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頁面囉!
您好像現在沒有停用內建的搜尋喔!?
設定好了,不過怎麼內建的還顯示在首頁,沒拿掉q_q
錯誤 如果使用fasle,那麼將會停留到他當前在Try的頁面囉!
正確 如果使用false,那麼將會停留到他當前在Try的頁面囉!
腸哥終於復活了
這篇文章超棒的阿~ 感謝分享!
前陣子網站主機的CPU爆量
停機了24H左右
花了一點時間做整理控管網站流量
剛好看到這篇真的是受益不淺阿
感謝阿推一個
Google的搜尋可以搜得到「留言回應」;WP內建的搜尋不能
因為WP內建設計上應該只針對 wp_posts 這張資料表,如果包含留言,可能太耗費資料庫資源了
要搜尋留言回應的話,可以考慮安裝 Search Everything Plugin 唷 =)
http://wordpress.org/extend/plugins/search-everything/
有中文版唷 =w=
我這次改寫佈景也有寫下這個功能
只是不知道可以這樣測試。
又上了一課了。
謝謝香腸大。
WOW 長這大 才知道WP有這搜尋功能….