WordPress屏蔽搜索非法关键词

转载自https://www.im286.net/thread-24267724-1.html

现在的很多灰产利用搜索页面,非法关键词搜索,然后提交sitemap。

利用合法网站发布违法广告,以bc、色情、药物为主。

WordPress构建的网站,除了屏蔽搜索结果页面,也可以按以下方法屏蔽敏感字搜索。

但是我想要的是“白名单”方案,也就是说,只允许搜索“名单”内的关键字,如我的诉求是只允许搜索省市地名
或者只允许搜索不超过10个字符。
曾经找了好几个晚上,都没有找到好的办法。

添加禁止搜索关键词,可以屏蔽大多非法搜索,但是效率好像并不高,如果能够限定搜索词不能超过10个字符,也能屏蔽大多非法广告。欢迎大家提供高频高危关键词。

在WordPress当前主题的functions.php,添加以下代码,然后就可以在WordPress后台的“设置”-“阅读”(wp-admin/options-reading.php)的“搜索关键词屏蔽”,输入屏蔽的关键字,一个一行。

    //屏蔽恶意关键词搜索
    add_action('admin_init', 'php_search_ban_key');
    function php_search_ban_key() {
    add_settings_field('php_search_key', '搜索关键词屏蔽', 'php_search_key_callback_function', 'reading');
    register_setting('reading','php_search_key');
    }

    function php_search_key_callback_function() {
    echo '<textarea name="php_search_key" rows="10" cols="50" id="php_search_key" class="large-text code">' .

    get_option('php_search_key') . '</textarea>';
    }
    add_action('template_redirect', 'php_search_ban');
    function php_search_ban(){
    if (is_search()) {
    global $wp_query;
    $php_search_key = get_option('php_search_key');
    if($php_search_key){
    $php_search_key = str_replace("\r\n", "|", $php_search_key);
    $BanKey = explode('|', $php_search_key);
    $S_Key = $wp_query->query_vars;
    foreach($BanKey as $Key){
    if( stristr($S_Key['s'],$Key) != false ){
    wp_die('请不要搜索非法关键字');
    }
    }
    }
    }
    }

分享到:
赞(0)