相信很多站長遇到過這種情況:網站內的搜索功能被不良分子利用,通過在站內搜索框中不斷搜索敏感關鍵詞,產生一大批 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 的後台設置選項下的閲讀設置裏面就會出現一個文本域,如下圖:

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