改进 WordPress 网站的搜索功能

已发表: 2018-04-12

一旦您开始撰写博客内容并积累了不止几篇文章,您将有望吸引更多访问者访问您的网站。 当他们到达那里时,您的访问者只会想要最好的内容,而且只有当他们对该主题感兴趣时才会如此。 所以,即使你缩小了领域,只写 PC 游戏而不是所有的视频游戏,人们仍然不会对你到目前为止写的每一篇文章都感兴趣。

除了您或其他访问者提供的链接和推荐之外,您还希望让您的用户能够搜索您的网站。

与人们在 Google 上搜索以访问您的网站的方式相同,您希望他们也能够搜索您的博客。 是的,WordPress 中已经集成了一个默认搜索功能。 但是,如果您尝试过使用它,您可能已经注意到它并不像您想象的那么好,即使它多年来有所改进。

因此,为了使搜索功能更加出色,您可以做一些我将在本文中向您展示的操作。

WordPress 的最佳搜索插件

有了各种各样的 WordPress 插件,您不必担心修改搜索功能。 有许多很棒的插件可以扩展您的搜索可能性,您将自豪地在您拥有的网站上展示您的搜索框。

如果你做的一切正确,用户很可能会在你的新搜索框中输入他们想要的内容并获得他们预期的结果。 现在让我们看看您可以在几分钟内安装的一些最好的 WordPress 搜索插件。

WP 谷歌搜索

价格:免费

WP 谷歌搜索

让我们从一个插件开始,它可以帮助您在您的网站上获得 Google 搜索引擎的强大功能。 这个免费插件将帮助您设置一个 Google 搜索框,您可以将其作为小部件轻松放置在您的网站上。

您必须注册一个 Google 自定义搜索帐户,获取 ID,然后插件会完成剩下的工作。 然后,您的访问者将能够搜索您的网站或整个网络,具体取决于您的设置,或者如果您决定这样做,甚至只搜索图像。 您可以自定义许多搜索功能、应用自定义布局、更改颜色、字体、缩略图等等。

  • 结果由 Google 提供支持
  • 直接链接到 Google Analytics
  • 自动完成

快速搜索

价格:免费

快速搜索

这个现代插件已经被许多流行的网站使用,并认可其功能。 Swiftype 不仅具有最好的搜索算法之一,可以为您提供有意义的结果,而且还可以让您详细了解在您的网站上进行的所有搜索。 使用此功能,您可以轻松找到适合您网站的最佳关键字,并使内容和搜索结果更加出色。

该插件将取代标准的 WordPress 搜索,一旦您创建了一个免费帐户,您就可以自定义 Swiftype,使其尽可能适合您的网站。 如果您有一个显示博客内容的移动应用程序,您可以使用移动 SDK 帮助您的移动访问者更轻松地搜索内容。

  • 拖放界面
  • 自动完成
  • 详细分析

搜索WP

价格: 49 美元起

搜索WP

SearchWP 是另一个流行的 WordPress 插件,它将成为默认 WP 搜索的绝佳替代品。 安装后,您不必处理困难的设置,相反,您可以将其配置为使用自定义字段和帖子类型、不同的分类法等。

该插件适用于不同的媒体类型,因此可以轻松找到视频、PDF 文档、音频等。 它的算法会考虑您文章中关键字的相关性,因此,例如,在标题中找到的词对搜索结果的影响比在文章、评论或侧边栏中找到的词影响更大。 开发人员会喜欢扩展插件功能的可能性,同时您还可以安装不同的扩展。

您可以获得搜索结果的详细统计信息,以便您可以处理人们正在搜索的内容。 目前,您可以选择三种不同的许可证,每年 49 美元起。

  • 关键字权重控制
  • 搜索视频、音频和 PDF 等媒体
  • 详细分析

相关性

价格:免费或溢价 49.95 美元起

相关性

Relevanssi 可能听起来很相关。 实际上,确实如此,因为 Relevanssi 是芬兰语中的相关词。 此插件将替换您默认的 WordPress 搜索引擎,并使其变得更好。 为了继续关于插件名称的故事,Relevanssi 将根据其相关性而不是日期对您的结果进行排序。 这只是长列表中的第一个功能。 这个强大的插件可以匹配部分单词(模糊匹配),它可以让你搜索短语或让你只搜索一个词。

创建自定义摘录,突出显示文档中的结果,并使用这个很棒的插件做很多很多事情。 Relevanssi 可以搜索评论、标签和自定义帖子类型。 它还将使您能够选择标题、标签和评论的权重,从而改进搜索。

我们要强调的众多功能之一是建议功能,该功能将为用户提供类似的搜索查询——类似于谷歌著名的“你的意思是?” 建议。 Relevanssi 提供了更多功能,这只是我们所讨论的免费版本。 如果您需要更多,尤其是在运行多站点时,您应该查看高级版本。

  • 模糊匹配
  • 文档中突出显示的搜索词
  • 基于建议的搜索结果

搜索智商

价格:每月 159 美元起免费或溢价

搜索智商

SearchIQ 是另一个出色的 WordPress 搜索插件,可为用户提供增强的搜索体验。 凭借强大的搜索逻辑、高级语义分析、错误处理和许多此类功能,SearchIQ 将用户引导至他们正在寻找的结果。 SearchIQ 非常易于安装和定制。

入门需要在 SearchIQ 上创建一个帐户,安装并激活插件,从 SearchIQ 仪表板复制 API 密钥,然后在 WP 后端输入 API 密钥。 免费版本提供基本功能,对于需要 PDF、CDN、Facet 或自定义品牌等高级功能的企业,可以订阅付费包。

您不仅可以跨页面、帖子、WordPress 默认系统字段、用户定义的自定义字段、产品属性和分类法、PDF 和摘录进行搜索。 但 SearchIQ 的仪表板还包括实时分析数据,可帮助您了解用户的搜索行为,从而更好地优化您的内容策略。

搜索一切

价格:免费

搜索一切

默认 WP 搜索的另一个很好的免费替代品绝对是 Search Everything 插件。 它将在不修改模板的情况下改善您的搜索结果。 您可以将其设置为搜索 WordPress 中的几乎所有内容,包括页面、摘录、草稿、附件、评论、标签甚至自定义字段。 除此之外,您可以随意省略页面并发布您不想在搜索结果中找到的页面。

这个插件带有一个名为 Research Everything 的小助手,它会在您撰写新文章时搜索您的内容,并让您能够立即链接到其他内容。 如果您想进行更多研究,Power Search 功能将帮助您在 Internet 上查找内容。 如果您正在运行,只需安装并激活插件,甚至无需查看设置页面,您就会在几分钟内启动并运行改进的搜索引擎。

  • 排除您不想被搜索的内容
  • 包括研究一切和 Power Search
  • 不修改您的模板页面

更改 WordPress 中的默认搜索 URL slug

除非您的网站是仅包含您公司名称和联系信息的单页网站,否则如果您询问我们,搜索功能是必备功能。 无论您是刚刚创建 WordPress 博客还是网站上已经有数千篇文章和页面,无论您是作为业余爱好写作还是通过博客赚钱,您都必须尽一切努力让访问者留在网站上. 为他们提供一种简单快捷的方式来搜索您的网站绝对是您应该注意的重要事项之一。

无论您是使用 WordPress 的内置搜索引擎还是安装了不同的搜索引擎,都需要注意搜索结果。

虽然您可以对搜索功能做很多事情,但您可能忘记了一件简单而重要的事情。 是的,我们讨论的是在搜索返回结果页面后出现在地址栏中的 URL slug。

默认情况下,WordPress 使用非用户友好版本的 slug。 不仅您的访问者会发现那个 slug 很奇怪,而且它也可能会损害您的 SEO。 更好的说法是,您可以通过将 slug 更改为人类和机器都可以理解的内容来帮助您的 SEO。

如果您尝试过搜索您的网站,您可能会看到地址栏中出现的奇怪的 /?s=term slug。 在这一部分,我们将向您展示如何将其更改为您想要的任何内容。 例如,我们将把“/?s=term”改为“/search/term” ,这样更容易记住和使用。

  1. 打开functions.php
  2. 复制并粘贴以下内容:
 函数 feed_dir_rewrite( $wp_rewrite ) {
$feed_rules = array( 'search/(.+)' => 'index.php?s=' 
. $wp_rewrite->preg_index(1));
$wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}
add_filter('generate_rewrite_rules', 
'feed_dir_rewrite' );
  1. 将第三行的目标 URL 更改为您喜欢的任何内容
  2. 保存更改

在对functions.php 文件进行这些更改后,您可以尝试新的URL slug。 别担心; 如果插件或用户试图通过导航到旧 URL slug 来访问您的搜索结果,您的网站不会返回错误,而只是将搜索结果重定向到新 URL。

如果您想将 slug 更改为独特的东西,您可以在代码的第三行执行此操作。

这会将您的搜索结果页面带到 – www.yourdomain.com/search/search-term

现在您可以放松并停止思考搜索结果如何显示给您的用户以及搜索引擎机器人,他们现在可以更轻松地抓取这些结果。 另外,看到整个“搜索”词而不是那个奇怪的问号后跟字母“s”不是更自然吗? 告诉我们你的想法。

仅按标题搜索帖子

如果您仍在使用默认的 WordPress 搜索引擎,您迟早会想要修改它的工作方式。 虽然它搜索您的帖子的方式没有任何问题,但您可能希望将搜索限制为标题。

这个小功能不会浏览所有内容,而是只搜索帖子标题。 在某些情况下,这可能真的有助于您获得更清晰、更快的搜索结果:

  1. 打开functions.php
  2. 复制并粘贴此代码:
 函数 __search_by_title_only( $search, &$wp_query )
{
全球 $wpdb;
如果(空($搜索)){
返回 $search; // 跳过处理 - 没有搜索词 
在查询}
$q = $wp_query->query_vars;
$n = !empty($q['exact']) ? '' : '%';
$搜索 =
$searchand = '';
foreach ((array)$q['search_terms'] as $term) {
$term = esc_sql($wpdb->e​​sc_like($term));
$search .= "{$searchand}($wpdb->posts.post_title LIKE 
'{$n}{$term}{$n}')";
$searchand = ' AND ';
}
如果(!空($搜索)){
$search = " AND ({$search}) ";
如果 (!is_user_logged_in())
$search .= " AND ($wpdb->posts.post_password = '') ";
}
返回 $search;
}
add_filter('posts_search', '__search_by_title_only'
, 500, 2);
  1. 保存更改

更改后,您可以打开您的网站并开始新的搜索。 为确保一切正常,您应该尝试搜索您知道的某个帖子标题中的单词,该词应在结果页面中返回该帖子。 如果您尝试搜索未包含在您已发布的任何标题中的单词或完整术语,搜索结果将是空的。

这实际上就是全部。 如果您决定要恢复旧搜索,只需删除或注释掉该功能即可。

改进搜索功能并在类别内查找结果

WordPress 中的默认搜索功能随着每次更新而变得越来越好。 您可以轻松地在博客中包含搜索功能,让人们轻松找到他们想要的内容。 但是,如果您没有对该函数进行任何更改,搜索结果将显示与查询相关的所有内容。 如果你有很多内容,这可能是一个问题,因为人们会在结果页面上有大量文本,这对他们没有多大帮助。

改进搜索功能WordPress

在本文的这一部分中,我们将向您展示如何允许访问者仅在您可以在代码中定义的特定类别内进行搜索,或者允许访问者从下拉列表中选择类别。

提前选择类别:

首先,我们将向您展示创建新搜索框的代码。 使用此代码,您不会让人们为他们的搜索选择类别,但您将在代码中定义类别。 这可能会帮助您处理需要单独搜索框的特殊类别。

例如,您可能有一个仅包含智能手机评论的类别。 使用此代码,您可以允许人们仅通过该类别进行搜索,这样搜索结果就不会加载有关家用电器或网站上其他内容的信息。 有道理吧?

  1. 打开您希望显示搜索框的页面或从中创建一个新的小部件
  2. 复制并粘贴以下代码:
 <form method="get" action="/">
<div>
<input type="text" value="" name="s" />
<input type="hidden" value="1" name="cat" />
<input type="submit" name="搜索"
值="搜索"/>
</div>
</form>
  1. 将第三个输入类型的值更改为要搜索的类别 ID
  2. 保存更改

进行这些更改后,将出现一个新的搜索框,它允许您搜索您在上面的代码中输入的 ID 的类别。 如果您想搜索多个类别,只需通过输入以逗号分隔的数字来添加更多 ID。

 <input type="hidden" value="1, 2" name="cat"/>

虽然在某些情况下这可能是一个很好的解决方案,但有时您会希望显示类别列表并允许访问者选择搜索位置。

让访问者选择要搜索的类别:

遵循相同的示例,其中您有智能手机、台式电脑、笔记本电脑、家用电器等类别。例如,为什么不允许访问者选择其中之一并仅通过“笔记本电脑”类别进行搜索?

在以下几行中,我们将向您展示如何做到这一点:

  1. 打开 sidebar.php 或您希望搜索框出现的任何位置
  2. 复制并粘贴代码:
 <form method="get" action="<?php bloginfo('url'); ?>">
<字段集>
<input placeholder="搜索类别" type="text" 
name="s" value="" maxlength="40" required="required" />
<选择名称="category_name">
<option value="smartphones">智能手机</option>
<option value="desktop-computers">台式计算机
</选项>
<option value="laptops">笔记本电脑</option>
<option value="home-app">家用电器</option>
</选择>
<button type="submit">搜索所选类别</button>
</fieldset>
</form>
  1. 更改选项值下的类别。 在值和标签之间的名称中写入类别 slug
  2. 保存更改

自动显示列表中的所有类别:

如果您想显示所有类别,并且您不想担心在管理面板中添加/删除它们后在此代码中添加或删除它们,请在 <select></select> 标记之间使用此代码:

 <?php
$categories = get_categories();
foreach ($categories 作为 $category) {
echo '<option value="', $category->slug, '">', 
$category->name, "</option>n";
}
?>

此代码将生成所有可用类别的列表。

就是这样。 现在,您可以轻松添加访问者可以轻松搜索的一个或多个类别。 无论您是希望人们自己选择类别还是希望在代码中指定类别,您都可以使用。

为 WordPress 搜索结果定义类别

默认情况下,WordPress 会搜索您网站上的所有内容。 如果用户在搜索框中键入一个词或整个短语,他将获得整个网站的结果,包括帖子、页面、类别和标签、标题和内容等。 如果您还没有安装任何其他搜索系统,或者已经进行了更改,您可能需要修改默认搜索框。

在 WordPress 中搜索类别

如果您想修改 WordPress 中已经存在的搜索框并定义将包含在结果页面中的类别,您可能会采取一些不同的方法。

在这一部分,我们将向您展示如何做到这一点。 您可以轻松地从代码中添加或删除类别,并决定您(不)希望在搜索结果中使用哪个类别。

在搜索结果中添加或删除类别:

  1. 打开functions.php
  2. 复制并粘贴代码。
 功能搜索类别($查询){
如果($query->is_search){
$query->set('cat','1,4,6');
}
返回 $query;
}
add_filter('pre_get_posts','searchcategory');

  1. 添加分类ID上的第三
  2. 保存更改

现在您已经进行了更改,搜索结果将仅从指定类别中获取信息,而其他类别将被排除在外。 如您所见,您可以轻松地在列表中添加类别; 如果您愿意,您可以只有一个类别,或者您可以设置任意数量的访问者能够搜索到的数量。 只需编写以逗号分隔的类别 ID。

如果您的唯一目标是从搜索结果中排除一两个类别,您可以更快地完成; 您可以通过在类别 ID 前输入减号 (-) 来排除一个,而不是输入要包括的所有类别。 例如,如果要排除 ID=1 的类别,则第三行代码将如下所示:

 $query->set('cat','-1');

你去吧。 现在,您可以更有效地管理搜索结果。

从 WordPress 搜索中排除页面或帖子

在大多数情况下,您希望访问者能够搜索您的帖子,而来自页面的结果可能只会分散典型的“搜索者”的注意力。 如果您的页面包含联系信息、地图、作者信息等,您可能不需要将这些页面包含在搜索结果中。

如何从 WordPress 搜索中排除页面

虽然没有简单的方法可以告诉 WordPress 从搜索结果中排除帖子类型,但您需要自己这样做:

  1. 打开functions.php
  2. 将以下代码复制并粘贴到文件中:
 功能搜索过滤器($查询){
如果($query->is_search){
$query->set('post_type', 'page');
}
返回 $query;
}

add_filter('pre_get_posts','SearchFilter');
  1. 保存更改

完成更改并保存后,您可以自由访问您的网站并测试搜索引擎。 如果一切正常,您应该无法在搜索结果中从您的页面中找到任何信息,即您成功地从 WordPress 搜索结果中排除了页面。

如何从 WordPress 搜索中排除帖子

在介绍中,我们告诉您 WordPress 会浏览帖子和页面,并假设您不希望页面显示在结果中。 但是,如果您不希望帖子包含在这些结果中怎么办? 如果是这样,您可以对代码进行一项简单的更改并排除帖子而不是页面:

同样,您需要重复上面显示的 3 个简单步骤,但在第 3 行中进行了简单的更改。 不要将帖子类型设置为“ page ”,您必须将其设置为“ posts ”:

 $query->set('post_type', 'posts');

不要忘记保存所有内容,您就完成了。

使用插件从搜索结果中排除页面/帖子

我们将向您展示一个插件,而不是使用代码,它可以为您完成相同的工作,并使一切更加用户友好。

搜索排除

价格:免费

搜索排除

我们用于这项工作的插件是搜索排除。 使用插件再简单不过了:

  1. 导航到插件 - >添加新
  2. 搜索“搜索排除”
  3. 安装并激活插件
  4. 转到您的任何帖子和页面
  5. 在右侧面板上,找到“搜索排除”复选框,您可以在其中决定是否要将帖子/页面从搜索结果中排除。

排除多个帖子/页面后,您可以在插件设置( Settings->Search Exclude )中轻松找到排除项目的列表。 在列表中,您可以再次使用复选框来更改帖子/页面的状态。

如何仅从搜索结果中排除某些页面/帖子

无论您想要排除在搜索结果中显示的只有一页、两页还是十页都没有关系,您可以通过实现代码轻松地做到这一点。 在您匆忙将代码复制粘贴到您的 functions.php 文件之前,我们建议您准备好您不希望出现在搜索结果中的页面。 您将需要页面 ID:

  1. 转到页面->所有页面
  2. 找到要排除的页面,然后单击“编辑”
  3. 在地址栏中,找到“post=6”或类似的数字代表页面 ID

准备好页面的 ID 号后,您就可以准备代码了:

  1. 转到 function.php 文件并打开它
  2. 复制并粘贴以下代码:
 函数 jp_search_filter( $query ) {
如果 ( $query->is_search && $query->is_main_query() ) {
$query->set('post__not_in', array(1,2,3,4,5,6));
}
}

add_action('pre_get_posts', 'jp_search_filter');
  1. 在第 3 行,将括号中的数字更改为您从页面上读取的 ID 号。 在这个例子中,我们排除了 6 个页面,它们各自的 ID 为 1 到 6。
  2. 保存更改并完成

安装代码后,您可以根据需要自由编辑它。 如果您将来有时需要包含其中一个页面,只需从代码中删除其 ID 号即可。 将更多页面添加到“排除的篮子”也是如此。 例如,如果您创建了一个不想在搜索结果中显示的新页面,请随时将其 ID 号添加到代码中。

允许在 WordPress 中使用语音搜索

在智能手机成为我们生活的重要组成部分后,语音搜索得到了迅速发展。 虽然从来都不是完美的,但在智能手机上搜索某些东西已经让打电话等事情变得容易多了。 是的,你仍然必须非常小心发音,因为你最终可能会打电话给你不想要的人,或者你的文字演讲最终可能会与你刚刚所说的不太接近。 另外,问 Siri 愚蠢的问题总是很有趣,对吧?

不管你喜不喜欢,很多人都在手机上使用语音搜索功能。 那么为什么不让访问者以同样的方式搜索您的网站呢?

也许你不知道你可以用 WordPress 做到这一点,或者你不知道该怎么做,但现在你没有借口了。

这里有一个插件,可以扩展您的 WordPress 搜索,而不是代码。

声音搜索

价格:免费

声音搜索

在下载和安装插件之前,重要的是要知道它仅适用于 Chrome 和 Safari。 如果您认为该插件无法在任何其他浏览器中运行,那么您的访问者将能够使用他们自己的声音搜索内容。

通过安装插件,您不会覆盖文本输入——如果用户想通过输入以标准方式使用搜索框,您应该知道该功能是完整的。

此外,该插件应该与您可能已安装的任何其他搜索插件一起使用,因此您可以自由地尝试使用 Relevanssi 或 Search Everything 等插件。

  1. 转到插件 - >添加新
  2. 搜索“语音搜索”
  3. 安装并激活插件

就是这样。 激活插件后,您应该可以毫无问题地使用语音搜索。 你觉得这个功能怎么样?

包起来

除非您有一个简单的小册子网站或任何类似的网站,否则您只需要将功能搜索功能嵌入到您的 WordPress 网站中。 如果它是一个定期更新的博客,那就没有任何借口了。

在本指南中,我们向您展示了如何修改默认的 WordPress 搜索功能。 如果您不喜欢它,有几个插件可以在几分钟内替代标准搜索功能。 无论您的选择是什么,都可以通过改进搜索功能来改善您的 WordPress 网站。