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

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