在WordPress中,如果你想要禁止特定的关键字被搜索,而不使用任何插件,你可以通过修改WordPress的核心搜索功能来实现。这通常涉及到编辑你的主题文件或添加一个自定义的函数到你的主题的functions.php
文件中。
以下是一个基本的步骤来实现这个功能:
1. 编辑functions.php
文件
首先,你需要访问你的WordPress网站的文件系统,并找到你的主题文件夹。在这个文件夹中,你会找到一个名为functions.php
的文件。使用文本编辑器打开这个文件。
2. 添加自定义搜索过滤函数
在functions.php
文件的末尾,你可以添加以下PHP代码来定义一个自定义的搜索过滤函数:
function custom_search_filter($query) {
if ($query->is_search) {
// 定义你想要禁止的关键字数组
$forbidden_keywords = array('关键字1', '关键字2', '关键字3');
// 获取当前搜索查询
$search_query = $query->get('s');
// 检查搜索查询中是否包含任何禁止的关键字
if (preg_match("/\b(" . implode("|", $forbidden_keywords) . ")\b/i", $search_query)) {
// 如果包含,则重定向到一个错误页面或显示一个自定义消息
// 这里我们简单地重定向到首页,但你可以根据需要修改
wp_redirect(home_url('/'), 302);
exit;
}
}
}
add_action('pre_get_posts', 'custom_search_filter');
在这个例子中,$forbidden_keywords
数组包含了你想要禁止的所有关键字。当搜索查询包含这些关键字中的任何一个时,用户将被重定向到网站的首页。你可以根据需要修改重定向的目标URL或显示一个自定义的错误消息。
3. 测试和调试
保存functions.php
文件后,访问你的WordPress网站并尝试进行搜索。如果你搜索了一个被禁止的关键字,你应该会被重定向到指定的页面或看到自定义的消息。
注意事项
- 修改
functions.php
文件时要小心,因为错误的代码可能会导致你的网站崩溃。 - 在进行任何更改之前,最好备份你的
functions.php
文件。 - 如果你使用的是自定义主题或第三方主题,并且主题更新可能会覆盖你的更改,请考虑将你的自定义代码放在一个单独的插件中,或者使用Code Snippets插件来管理你的自定义代码。
- 这种方法可能会影响到搜索引擎优化(SEO),因为禁止关键字搜索可能会导致一些相关的内容无法被搜索到。因此,在实施之前,请确保你了解这种更改可能带来的后果。
其他代码参考:
//WordPress限制搜索关键词实现搜索黑名单
function dmd_search_filter($request_vars) {
if (!is_user_logged_in()){
$request_vars['s'] = "请先登录";
}
if (!empty($request_vars['s']) && strlen($request_vars['s'])>5) {
$request_vars['s'] = "搜索词太长";
}
return $request_vars;
}
add_filter('request', 'dmd_search_filter');
//WordPress限制搜索关键词实现搜索黑名单
function dmd_search_filter($request_vars) {
if (!is_user_logged_in()){
$request_vars['s'] = "请先登录";
}
if (!empty($request_vars['s']) && iconv_strlen($request_vars['s'],"UTF-8")>5) {
$request_vars['s'] = "搜索词太长";
}
$a=array("xx","xx","xx");
for($i=0;$i<count($a);$i++){
if(stristr($request_vars['s'],$a[$i])!=false){
$request_vars['s'] = "非法搜索";
//header('HTTP/1.1 404 No Found');
//exit;
break;
}
}
return $request_vars;
}
add_filter('request', 'dmd_search_filter');
需要过滤的关键词自行添加,注意:过滤词尽量大于2个字长度越短越好,这里进行完全匹配,因此过滤词越长越难过滤,一个字将过滤很多搜索,建议不要使用1个字。