WordPress 搜索:有用的插件和片段
编者注: 要获得这篇文章的更新版本,请在此处查看。
WordPress 是一个强大的 CMS 工具,不仅支持博客,还支持无数的论坛和个人网页。所提供的许多功能在市场上都相当先进,但他们的搜索似乎仍然滞后。这些功能为极其复杂的问题提供了一个非常简单的解决方案——在您的网站上找到正确的内容!
尽管这些功能非常适合基于直接匹配来搜索文章,但该系统在许多可能的用途上仍有不足。更具体地说,无法在所有类别、标签甚至特定类别和/或标签之间进行搜索。同样,所有帖子都默认按日期显示,从最新到最旧。这在 UX 中是一个巨大的差距,那些可能正在寻找浏览量或评论最多的热门文章的用户呢?
下面我简要介绍了 WordPress 搜索功能及其在系统中的工作方式。了解一切如何开箱即用将使操作搜索变得更加容易。此外,我还添加了一些适用于任何 WP 网站的强大插件和代码片段。
WordPress 搜索基础
通过 WordPress 运行搜索查询时,所有结果都会根据发布时间返回。这将包括页面,如果 WordPress 设置了这样做的能力,那就太好了。两个很棒的插件Search Unleashed和Search Everything提供了修复程序,允许用户搜索页面和评论。一个主要问题是 WordPress 如何忽略搜索中关键字的力量。
如果一篇文章是在一两年前发表的,那么它在搜索中被找到的可能性微乎其微。除非用户将他们想要的关键字输入到更大的引擎(例如 Google 或 Bing)中。当您搜索“网页设计”时,WordPress 正在寻找与之匹配的内容。WordPress 开发人员可能正在进行更新,但这样的查询不会返回仅包含design的结果。
同样,帖子类别和标签呢?这些可以在关键字中匹配并抛出整个搜索。与大多数搜索相比,WordPress 搜索背后的独特功能是史前的,值得庆幸的是,该系统可以从开发社区内公开更新。
WordPress 主题文件
每个WordPress 主题文件夹中都有一组搜索文件。这些似乎对功能和强大的搜索表单很有用。在根模板文件search.php中,您将找到搜索结果的通用模板。
很多时候我会听到开发人员编造错误,将他们的 search.php 包含在另一个核心文件中,例如page.php或single.php。这是构建模块化模板的强大技术,但是直接搜索文件仅用于显示分页和结果。标准文件名searchform.php包含一些用于调用搜索查询数据的基本 PHP 代码。文件的其余部分是一个简单的 HTML 表单,包括一 (1) 个输入字段和一个提交按钮。
此文件通常包含在模板的标题或侧边栏区域中。它提供了一个包含现成表单的优雅解决方案,用户可以利用 WordPress 中提供的许多强大的搜索技术。从 HTML5 中的许多新属性中,可以在输入字段中提供默认文本,例如“搜索…”或“在此处输入术语”。
当输入数据以显示您的搜索表单时,简单的例程可能会让您大吃一惊。编写了一个简单的函数get_search_form()
,可以将其添加到模板中的任何位置以显示searchform.php的内容。这是 WordPress 开发的内部函数,用于使搜索功能的开发变得非常简单!
WP查询功能
有一个函数写入 WordPress 的后端,可用于直接 SQL 查询。WP_query()
已被 WordPress 开发人员和主题设计师等人用来创建比 WordPress 默认设置更复杂的自定义搜索查询。
如果您是一名开发人员,我建议您通读函数参考页面,以深入了解该方法。文档很长,可能不会被很多人使用。有一些真正简洁的功能,例如根据当前在页面中显示的内容提取特定的帖子或类别。
Query 函数还允许检查当前页面值。WordPress 会自动为您网站上的每种类型的页面命名。博客文章、页面、搜索结果和主页只是几个例子。下面我为那些有兴趣深入研究的人概述了常见页面变量的简要列表。
$is_single
– 查看单个帖子页面$is_author
– 查看作者帖子目录页面$is_search
– 查看搜索结果页面$is_category
–$is_tag
– 按类别或标签查看帖子列表$is_404
– 查看 404 错误页面
16 个增强搜索的插件
下面我包含了一些与搜索和查询相关的流行插件的链接。这些都是免费的,可以从 WordPress 的官方扩展目录下载。我强烈建议不要一次安装超过 2 或 3 个这样的东西——仔细阅读描述并一个一个地测试,看看是否有任何东西最适合你的博客!
Google Custom Search Plugin在 WordPress 中搜索的默认选项并不是最好的解决方案。通常,网站管理员更愿意通过 Google 收集他们的搜索查询,以获得更快、更有针对性的结果。安装后,此插件将使用自定义 Google 搜索自动重写默认的 WordPress 搜索表单。即时采用一组新的友好 URL!
增强的搜索表单默认情况下,WordPress 搜索表单是一个标准输入字段。这对于涉及特定关键字的基本查询非常有用,但对于高级用户而言,默认选项不足。Enhanced Search Form 将动态生成一个 XHTML 表单,该表单接受新的搜索词,例如 Boolean AND 语句。
Search Everything Search Everything 是另一个出色的一体化插件,可支持您的高级搜索需求。一些最受欢迎的功能包括搜索突出显示、自定义分类法、浏览批准的评论等等!管理面板非常简单,设置轻而易举。
WordPress Sphinx 搜索插件Sphinx 服务器可以将繁重的搜索查询从您的服务器卸载到其他远程设置中。激活后,您会注意到超快的速度,并且能够根据新鲜度和相关性对结果进行排序。此外,该插件能够显示最近和最相关搜索关键字的侧边栏小部件。
Search Meter Search Meter 对于那些对跟踪分析感兴趣的网站管理员来说是一个迷人的想法。每个搜索查询都存储并存档在管理面板中,并带有检查搜索分析的额外详细信息。您将获得有关有多少搜索失败或未找到结果的数据,以及流行和最近的搜索词。该插件将生成您可以重置或导出以供检查的统计数据。
Fast WordPress Search Fast WordPress Search 是 WordPress 默认引擎的基本替代插件。这通常会返回更多相关页面并略微加快流程。该过程被编写为与 WP 庞大的函数库一起工作,以减少数据库调用并为密集查询返回更快的结果。安装还附带基准测试工具来比较时间。
Amazon Search Widget如果您使用 Amazon 的附属程序,那么您会喜欢下一个插件。只需几个简单的步骤和一个模板编辑,就可以非常方便地实现基于 Flash 的搜索表单。这将在亚马逊的图书馆内搜索以提取有关产品和新版本的数据。从这里开始,只需输入您的会员 ID 即可开始从您的博客搜索中赚钱!
Looser Search Plugin在这里,我们有一个小插件,安装后立即寄予厚望。Looser Search Plugin 修改了 WordPress 库中已经内置的进程以匹配关键字而不是完整的术语。跳过常用英语单词的内部词典以加快搜索过程。如果您正在寻找一个基本的插件来安装并获得最快的结果,我强烈推荐这个。
Dave 的 WordPress Live Search如果您是 Microsoft Live Search 的粉丝,这个简单的插件将增强您的博客体验。提供来自 Live Search 的结果意味着比内部处理具有更高的相关性和更快的加载时间。该插件旨在在用户输入时提供即时的最新结果——所有这些都是在幕后使用 jQuery 和一些基本的 CSS 样式提供支持的。尝试安装并查看您的博客是否可以处理页面加载,因为它为搜索结果提供了惊人的用户体验。
搜索标签云此插件使您可以轻松访问以开发简单的标签云。这将导致来自谷歌的高排名,因为更多的链接将导致您的博客页面。此外,当您考虑只需单击几下即可找到多少帖子时,用户体验会显着提高。该插件需要标准安装步骤,并且在开发时考虑到了 SEO。
Highlight Search Terms您可能已经看到这个插件被今天无数的博客所采用。每当访问者通过主要搜索引擎(Google、Yahoo!、Bing、Lycos、Ask……)找到您的页面时,每个关键字都会在您的内容中突出显示。这有助于访问者找出页面内容所在的位置以及它所在的参考框架。默认情况下没有核心 CSS 样式,因此您必须在激活后自行设计这些样式。
Better Search Better Search,顾名思义,是一个标准插件,可以让您的 WordPress 博客更好地搜索。每个结果页面都根据关键字相关性和用于识别元标记、帖子标记和类别的高级技术进行拆分。键入新的搜索表单时,将显示在整个博客中搜索的最流行的搜索词。这会根据您的搜索查询带来的流量经常更新!
Search Light正如您可能在其他许多地方看到的那样,“按类型更新”功能已经爆炸式增长。自从发布 Google Instant 以来,许多其他搜索提供商都在推出类似的技术。Search Light 是一个很棒的插件,它使用 Ajax 下拉界面来创建相关查询的动态菜单。也可以在搜索栏本身内绑定您的帖子缩略图和结果总数。
WP Instant Search此插件需要一些外部库,但提供与以前的 Search Light 类似的功能。如果您真的喜欢 Ajax 下拉建议,您会在这里发现许多与 WP Instant Search 相同的功能。该插件已更新到最新版本的 WordPress 3.0.5,并将检查 WordPress 标签、帖子、页面和类别。
WP 电子商务产品搜索小部件此插件支持在 WordPress 上运行的电子商务解决方案的小部件显示。当您在线销售商品甚至软件时,重要的是您的电子商务解决方案易于浏览且产品易于查找。使用这个漂亮的插件,我们可以替换 WordPress 陈旧的搜索功能,以包含一个新的查询视图。结果页面将以网格样式布局列出产品,并与最新版本保持兼容。
ThreeWP Ajax Search一个用于 Ajax 搜索的实用插件。只需下载并安装该插件,即可了解该过程的展开有多么容易!默认设置与 Twentyten 主题和所有衍生主题完美配合。一个很酷的功能是这个插件如何围绕 WordPress 的默认搜索引擎工作。在这种情况下,您不会失去 WordPress 强大的库中的任何东西,而只会获得出色的前端体验效果。有许多自定义选项,包括 CSS 样式和 jQuery 速度以及动画样式。
5 个有用的搜索片段
1. 从搜索结果中排除帖子/页面
以下功能允许您从搜索结果中排除任何类别的帖子,甚至页面。(通过wprecipes)
(函数.php)
1个
2个
3个
4个
5个
6个
7
8个
|
function SearchFilter( $query ) { if ( $query ->is_search) { $query ->set( 'cat' , '0,1' ); } return $query ; } add_filter( 'pre_get_posts' , 'SearchFilter' ); |
2.搜索特定类别
返回特定类别的搜索结果。
(函数.php)
1个
2个
3个
4个
5个
6个
7
8个
9
|
function SearchFilter( $query ) { if ( $query ->is_search) { // Insert the specific categories you want to search $query ->set( 'cat' , '8,9,12' ); } return $query ; } add_filter( 'pre_get_posts' , 'SearchFilter' ); |
3.搜索特定的帖子类型
过滤掉所有其他帖子类型并将您的搜索定位到特定的 WordPress帖子类型。
(函数.php)
1个
2个
3个
4个
5个
6个
7
8个
9
10
|
function SearchFilter( $query ) { if ( $query ->is_search) { // Insert the specific post type you want to search $query ->set( 'post_type' , 'feeds' ); } return $query ; } // This filter will jump into the loop and arrange our results before they're returned add_filter( 'pre_get_posts' , 'SearchFilter' ); |
4. 突出显示 WordPress 搜索词 (jQuery)
在 WordPress 结果页面中突出显示搜索词。(通过 weblogtoolscollection)
(函数.php)
1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
16
17
18
|
function hls_set_query() { $query = attribute_escape(get_search_query()); if ( strlen ( $query ) > 0){ echo ' <script type= "text/javascript" > var hls_query = "'.$query.'" ; </script> '; } } function hls_init_jquery() { wp_enqueue_script( 'jquery' ); } add_action( 'init' , 'hls_init_jquery' ); add_action( 'wp_print_scripts' , 'hls_set_query' ); |
(header.php) , 之前</head>
1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
16
17
18
19
|
<style type= "text/css" media= "screen" > .hls { background: #D3E18A; } </style> <script type= "text/javascript" > jQuery.fn.extend({ highlight: function (search, insensitive, hls_class){ var regex = new RegExp( "(<[^>]*>)|(\\b" + search.replace(/([-.*+?^${}()|[\]\/\\])/g, "\\$1" ) + ")" , insensitive ? "ig" : "g" ); return this.html(this.html().replace(regex, function (a, b, c){ return (a.charAt(0) == "<" ) ? a : "<strong class=\"" + hls_class + "\">" + c + "</strong>" ; })); } }); jQuery(document).ready( function ($){ if (typeof(hls_query) != 'undefined' ){ $( "#post-area" ).highlight(hls_query, 1, "hls" ); } }); </script> |
5.显示搜索词+结果计数
返回搜索查询和结果数。示例 –推特的搜索结果 – 8 篇文章。(通过wpbeginner)
1个
2个
3个
4个
5个
6个
7
8个
9
10
11
|
<h2 class = "pagetitle" > Search Result for <?php /* Search Count */ $allsearch = & new WP_Query( "s=$s&showposts=-1" ); $key = wp_specialchars( $s , 1); $count = $allsearch ->post_count; _e( '' ); _e( '<span class="search-terms">' ); echo $key ; _e( '</span>' ); _e( ' — ' ); echo $count . ' ' ; _e( 'articles' ); wp_reset_query(); ?> </h2> |