wordpress防止站内搜索被他人恶意利用

相信很多站长遇到过这种情况:网站内的搜索功能被不良分子利用,通过在站内搜索框中不断搜索敏感关键词,产生一大批TITLE上带有敏感关键词的垃圾搜索结果页(如下图)。由于Baiduspider对每个站点的抓取额是有限定的,所以这些垃圾搜索结果页被百度收录,会导致其它有意义的页面因配额问题不被收录,同时可能因百度处理垃圾页面而影响网站正常排名。

wordpress防止站内搜索被他人恶意利用-wordpress教程-代码笔记 %

以上内容引自百度站长平台:http://zhanzhang.baidu.com/wiki/336

那么wordpress如何来预防这种恶意的利用呢?其实很简单在当前使用的wordpress主题的functions.php加入以下代码:

add_action('admin_init', 'v7v3_search_ban_key');
function v7v3_search_ban_key() {
    add_settings_field('v7v3_search_key', 'v7v3搜索关键词屏蔽', 'v7v3_search_key_callback_function', 'reading');
    register_setting('reading','v7v3_search_key');
}
      
function v7v3_search_key_callback_function() {
    echo '<textarea name="v7v3_search_key" rows="10" cols="50" id="v7v3_search_key" class="large-text code">' . get_option('v7v3_search_key') . '</textarea>';
}
add_action('template_redirect', 'v7v3_search_ban');
function v7v3_search_ban(){
    if (is_search()) {
        global $wp_query;
        $v7v3_search_key =  get_option('v7v3_search_key');
        if($v7v3_search_key){
            $v7v3_search_key = str_replace("\r\n", "|", $v7v3_search_key);
            $BanKey = explode('|', $v7v3_search_key);
            $S_Key = $wp_query->query_vars;
            foreach($BanKey as $Key){
                if( stristr($S_Key['s'],$Key) != false ){
                    wp_die('请不要搜索非法关键字');
                }
            }
        }
    }
}

加入该代码后在wordpress的后台设置选项下的阅读设置里面就会出现一个文本域,如下图:

wordpress防止站内搜索被他人恶意利用-wordpress教程-代码笔记 %

将需要屏蔽的关键词输入到文本域里即可,一行一个关键词。英文不区分大小写,下面是搜索效果测试:

wordpress防止站内搜索被他人恶意利用-wordpress教程-代码笔记 %

wordpress防止站内搜索被他人恶意利用》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注