探索建站和运维乐趣

WordPress禁止/屏蔽特定关键字不被搜索查询的方法

对于WordPress程序比较了解的站长朋友知道,这款开源程序确实是当前比较好用的个人网站建站系统,但是唯独的问题就是随着使用时间的推移如果我们不加以技术处理会使得占用资源比较严重,而且可能出现各种超负载的问题。比如最近有网友就遇到一个问题,他的网站访问量比较大,当然用户通过站内搜索的频率就比较大,于是在前面我们老部落也有分享到一款【Search Limiter & Blocker】这款插件可以设置搜索频率。

但是这里又出现一个问题,有些搜索行为并非用户搜索而是软件搜索,或者有些行为是用户恶意行为导致搜索结果出现违禁内容之后被恶意举报,当然实际上这样的举报成功率比较低,即便有关键字也没有实质的内容。但是基于这样的占用网站负载的行为我们如何处理呢?

第一、设置搜索页面读取行为

<?php
$host = $_SERVER['HTTP_REFERER'];
if (substr($host, 0, 16) != 'https://www.laobuluo.com/') {
header("location:http://跳转的其他页面或者网站");
exit;
} //判断是不是自己页面进入的
get_header();
?>

这里可以判断搜索行为是不是在自己网站搜索过去的,如果是外部行为直接跳转。

第二、自定义屏蔽关键字

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

将我们功能代码添加到网站Functions.php文件中。

我们可以在WordPress后台【设置】【阅读】看到上图所示,可以添加屏蔽关键字,一行一个。然后我们在前台搜索看看,搜索是属于屏蔽关键字库的,就直接跳转,看不到结果。

赞(0)
转载保留:老部落 » WordPress禁止/屏蔽特定关键字不被搜索查询的方法


关注公众号『老蒋朋友圈』

获取更多建站运营运维新知!
互联网创业、前沿技术......