相信很多站長遇到過這種情況:網站內的搜索功能被不良分子利用,通過在站內搜索框中不斷搜索敏感關鍵詞,產生一大批 TITLE 上帶有敏感關鍵詞的垃圾搜索結果頁 (如下圖) 。由於 Baiduspider 對每個站點的抓取額是有限定的,所以這些垃圾搜索結果頁被百度收錄,會導致其它有意義的頁面因配額問題不被收錄,同時可能因百度處理垃圾頁面而影響網站正常排名。

以上內容引自百度站長平台:http://zhanzhang.baidu.com/wiki/336
那麼 WordPress 如何來預防這種惡意的利用呢?其實很簡單在當前使用的 WordPress 主題的 functions.php 加入以下代碼:
add_action('admin_init', 'wxd_search_ban_key');
function wxd_search_ban_key() {
add_settings_field('wxd_search_key', 'v7v3 搜索關鍵詞屏蔽', 'wxd_search_key_callback_function', 'reading');
register_setting('reading','wxd_search_key');
}
function wxd_search_key_callback_function() {
echo '<textarea name="wxd_search_key" rows="10" cols="50" id="wxd_search_key" >' . get_option('wxd_search_key') . '</textarea>';
}
add_action('template_redirect', 'wxd_search_ban');
function wxd_search_ban(){
if (is_search()) {
global $wp_query;
$wxd_search_key = get_option('wxd_search_key');
if($wxd_search_key){
$wxd_search_key = str_replace("
", "|", $wxd_search_key);
$BanKey = explode('|', $wxd_search_key);
$S_Key = $wp_query->query_vars;
foreach($BanKey as $Key){
if( stristr($S_Key['s'],$Key) != false ){
wp_die('請不要搜索非法關鍵字');
}
}
}
}
}
加入該代碼後在 WordPress 的後台設置選項下的閲讀設置裏面就會出現一個文本域,如下圖:

將需要屏蔽的關鍵詞輸入到文本域裏即可,一行一個關鍵詞。英文不區分大小寫,下面是搜索效果測試:
