【简单云】强化WordPress搜索功能:特色插件及代码片段

WordPress是一款强大的CMS系统工具,目前在它驱动之下的不仅有博客,还有为数众多的论坛及个人主页。不可否认,WordPress针对市场营销所提供的许多特色相当先进,但在搜索功能方面还是显得虚弱无力,实在让人不敢恭维:对于一个看似简单其实质上极其复杂的问题——让用户在您的网站中搜索到他们真正想要的内容——却提供了过于简单的解决方案!

相对搜索基于字词直接匹配的日志,WordPress默认的搜索系统确实已经很了不起了,但毕竟还有许多有用的功能未能够被挖掘出来并为我们所用。比较明显的一点就是,将范围缩小到分类或标签甚至是某一特定分类或标签之下进行搜索这一功能,未能够被充分的利用上。同样地,许多日志默认都是按照日期或者新旧的排列次序显示出来的,若要论及用户体验,还是存在相当大的差距的,如果用户要搜索的是基于浏览次数或者评论数最多的日志内容,那又如何呢?

wordpress-search

下面是我给大家简略总结出来的WordPress搜索功能方面的一些特色,让我们来了解一下,在WordPress系统中,它们到底是如何工作的。懂得了它们的工作原理,有利于我们更加容易地使用WordPress的搜索功能。另外,我还介绍了几款功能强大的搜索相关插件和代码片段,是任何基于WordPress创建的网站都需要的。

一.WP搜索基础

我们通过WordPress搜索系统执行一个搜索查询时,所有返回的搜索结果都是按照发布时间显示出来的,如果WordPress也被设置成能够搜索页面,结果中也将包含页面,效果一定很酷。有两款很好的插件—— Search Unleashed 和 Search Everything 正好为我们提供了针对此问题的解决方案,允许用户同时搜索页面和评论,主要的问题是,WordPress在搜索过程中是如何将关键词的影响忽略掉的?

wordpresscom-search

如果一篇文章是在一年或两年之前所发布的,那么它们被发现的几率几乎可以说为零,除非用户输入搜索关键词时是使用了Google 或 Bing 诸如此类大型的搜索引擎。但对于WordPress,当您输入“web design”进行搜索时,系统会将它们准确匹配起来执行查询。也许,WordPress开发者们正忙于系统升级的工作,但是这样的匹配查询,返回的结果中也决不会存在仅仅包含一个“design”的现象。

同样地,如果将搜索范围缩小到分类和标签又会怎么样呢?搜索查询的过程是要跟关键词匹配的,而不是进行全面搜索。WordPress搜索系统的这些明显特点,对于多数人来说已显得过时,可幸的是,在WordPress开发者社区,这方面的系统升级是完全公开的。

二.WP主题文件

在每个WordPress主题文件夹内都有一套搜索文件: search.php (搜索结果)和 searchform.php (搜索框),它们看起来还挺有用的,那个搜索框很强大。

有过许多回,我看到开发商错误地将search.php包含在另一个核心文件里,比如 page.php 或者 single.php ,那可是创建模块化模板时用到的一种很强的技术。不过,单纯的search.php只是用来显示搜索结果,为浏览内容的用户提供导航的,而另一个标准文件 searchform.php 则包含了一些调用搜索查询数据的基本php代码,其它的都是一些html代码,用来显示搜索输入框及提交按钮的。

wp-theme-files

搜索框一般都是主题自带的,它的位置通常位于侧边栏或者头部,用户可以很好地利用WordPress所提供的许多强大的搜索技巧。HTML5包含了许多属性,能够用来在搜索输入框内设置一行默认的文本提示,例如“搜索”或者“在此输入关键词”。

显示搜索框所要调用的函数非常简单,只有一句 get_search_form() ,可以放在模板文件中任何地方。get_search_form()属于WordPress的内置函数,在这个 基础上,我们可以轻而易举的开发出许多扩展功能。

三.WP Query 查询功能

WordPress后台有一条function函数.WP_query(),可以用来进行直接的SQL查询,不过,现在它还同时被WordPress开发和设计者们用于创建功能更加复杂的自定义搜索查询。

wp-query-codex

如果您也是一名WordPress开发者,我推荐您仔细阅读一下 WordPress function 函数参考 这个页面,对加深理解 .WP_query() 函数的使用方法有一定的好处。此页面文档篇幅比较长,看来比较少人使用,但那里的确有一些很有用的用法值得我们采用,比如根据基于当前页面所显示的内容来调用特定的文章或分类等等。

.WP_query() 函数能够检查当前页面存在的值,然后WordPress会自动给每一类型的页面指定相应的名称,例如Blog posts(博客文章), pages(页面), search results(搜索结果), 以及home(首页)。我在下面做了一个简单的常用页面变量列表,有兴趣的朋友可以参考一下:

  • $is_single –  单篇文章页面
  • $is_author –  作者文章目录页面
  • $is_search –  搜索结果页面
  • $is_category – $is_tag –   基于分类或标签的文章列表页面
  • $is_404 – 404错误页面

四.16款强化WP搜索功能的插件

下面所有列出的插件都是跟搜索查询相关的,附带了WordPress官方插件库的下载链接,强烈建议大家不要同时安装超过3个此类插件,安装前最好先阅读一下它们的使用说明,然后逐个测试,符合自己博客的需要才使用。

1. Google Custom Search Plugin ——谷歌自定义搜索插件

WordPress自带的搜索系统并非最好,网站站长们通常都会借用谷歌搜索引擎以加快查找目标内容的速度。安装这款插件后,WordPress默认的搜索框将自动被谷歌自定义搜索所取代。

Google-Custom-Search-Plugin

2. Enhanced Search Form ——搜索强化插件

默认情况下,WordPress搜索框属于一个标准型的输入栏,基本能够满基于关键词的搜索需求,但对于高级用户来说就存在某些不足的方面。Enhanced Search Form 这款插件会自动生成一个XHTML格式的搜索框,能够搜索某些新词条如Boolean 等等。

Enhanced-Search-Form

3. Search Everything

Search Everything 是一款综合性的多功能搜索插件,能够满足您的高级搜索需要,比较显著的特色有:高亮搜索结果关键词,自定义搜索参数,可以搜索获准评论等等,插件配置选项面板相当简单,设置易如反掌。 

Search-Everything

4. WordPress Sphinx Search Plugin

Sphinx 是一个富文本搜索引擎,WordPress Sphinx Search Plugin 插件正是通过将搜索查询的过程托管到Sphinx 服务器上,从而有效减轻自己网站服务器的负担(这跟谷歌自定义搜索有点相似)。插件激活后,能够根据关键词新鲜度及相关性将搜索结果列出,同时让您体验到其超快速的搜索速度。插件提供了一个侧边栏小工具,用来显示最近搜索关键词的,相当不错。

WordPress-Sphinx-Search-Plugin

5. Search Meter

Search Meter 对于那些喜欢跟踪数据分析结果的站长们是一款有趣的插件。插件的特色是,每次搜索查询都会被记录,并以额外数据形式储存到管理后台,用于检查搜索分析结果,这些分析结果会显示为搜索查询次数,无效查询,无结果查询,最常查询词条和最近查询词条,您可以重置查询行为,或将分析结果导出以备检查之用。

这是插件配置页面:

search-meter-plugin

这里插件统计分析页面:

插件统计分析页面

6. Fast WordPress Search

Fast WordPress Search也是一款能够替换WordPress默认搜索功能的插件,使用这款插件,返回的结果会更加精确,相关性更加强,速度也会快一些。插件处理搜索的过程结合利用了WordPress庞大的function函数空间,能够有效减少数据库查询次数,搜索结果返回速度更快,足以应付密集型的搜索行为。插件安装时会附带一个用以比较搜索时间的标准工具,借此,我们就可以知道搜索速度的快慢。

Fast WordPress Search

7. Amazon Search Widget

如果您参与了 Amazon 的联盟营销计划,您一定会喜欢上这款插件。插件使用十分简单,安装后,以[search](有 参数 可选的) 的形式插入到主题模板任何地方,就会自动生成一个基于flash的搜索表单。插件会搜索Amazon的产品目录并返回相关数据,如果输入您的Amazon ID号让用户搜索它的产品,您还可以赚点钱哦!

amazon-search-widget

8. Looser Search Plugin

这个小小的搜索插件,名称不怎么好听,却实用。插件会自动替换WordPress默认的搜索处理行为,精确匹配关键词进行查询,取代WordPress原本的全字词匹配。插件自带了一些内置的英文单词,搜索过程中都会被列入忽略范围,如果您搜索的正是英文单词,查询时会先跟插件内置的相比较,相同的便在搜索结果中被排除,这无疑会加快返回结果的速度。插件安装后无需作任何设置(其实插件也没有设置选项),激活即可。如果您对搜索要求不高,仅希望速度上有所提高,强烈推荐您使用此插件,不错!

looser-search-plugin

9. Dave’s WordPress Live Search

假如您是一个 Microsoft Live Search 谜(微软智能搜索谜),这个简单的WordPress插件着实能够帮助您提高博客搜索体验。插件将搜索结果托管到微软的Live Search搜索结果页面上,这就意味着,无论是对于搜索结果相关性还是速度来说,都会获得明显的提升。插件采用了一些 jQuery技术及一些CSS基本元素,带有配置选项页面,搜索结果页面有几种样式可以选用。试试吧,真的挺酷的!

daves-wordpress-live-search

10. Search Tag Cloud ——搜索标签云

这个插件让您非常容易地就能够创建一个简单的标签云,标签所显示的内容是您的博客用户最常搜索的关键词。这无疑对提高谷歌排名具有一定的作用有,因为这些标签会带来许多指向您博客的链接。Search Tag Cloud 需要配合上面的另一款插件 Search Meter 才能使用。插件安装后,后台有两个小工具,可将它们拖到侧边栏,一个显示用户最常搜索的标签(关键词),另一个显示哪些用户正在搜索什么。

search-tag-cloud

11. Highlight Search Terms ——高亮搜索关键词

您可能已经发现,目前有相当多的博客都在使用这款插件,可见它的流行程度了。无论何时,访客通过一个大型搜索引擎(例如 Google, Yahoo!, Bing, Lycos, Ask…)找到您的网页时,总会看到内容中的关键词是高亮的,与其它内容形成相当 分明的对照,能够帮助他们判断网页内容所处的位置。Highlight Search Terms插件默认不带CSS样式,安装后可以根据需要自己添加。

wp-highlight-search-terms

12. Better Search

正如其字面所暗示,Better Search 是一款能够给您的博客带来更加优越搜索体验的标准WordPress插件,搜索结果页面会根据关键词相关度及先进的元标签,文章标签和分类识别技术被分开列出。每次输入新的搜索词,会提示博客最常搜索词(有点像谷歌的搜索建议),根据博客查询次数所带来的流量变化,这些搜索词提示也会不断更新。插件安装后,后台有两个小工具,可拖到侧边栏,主要用来显示全部或每周或每天最常搜索的关键词。如果不想使用小工具,您也可以选择显示位置手动添加代码,方法请访问 插件作者主页 。

better-search-options

13. Search Light

Search Light 采用 Ajax 技术,以下拉列表式动态显示搜索结果,插件带有配置选项,其中包括结果页面主题样式,文章缩略图等。

wordpress-search-light

14. WP Instant Search

WP Instant Search 插件跟上面的 Search Light 有些相似,所不同的是,WP Instant Search 的搜索过程会自动匹配文章标签或分类或页面进行。

wp-instant-search

15. WP E-commerce Product Search Widget

这个插件适合基于WordPress创建的电子商务网站使用,能够以格栅布局的方式显示搜索结果,同时支持侧边栏显示。如果您的博客是为了出售某种产品或项目的,为了让用户更加方便找到他们想要的产品,这款插件倒是为您提供了绝好的解决方案。

wp-ecommerce-product-search

16. ThreeWP Ajax Search

一款实实在在的 Ajax 式搜索插件,安装后按照默认设置即可使用,尤其可与Twenty Ten及其衍生主题完美兼容,也能够跟WordPress默认搜索同时运行,无需担心会出现顾此失彼的尴尬现象。插件自带许多配置选项,包括CSS样式,jQuery加速等。

threewp-ajax-search-plugin

五.有用的WordPress搜索代码片段

1. 将指定的页面或者某分类下的日志从搜索结果中排除

下面的函数允许您将任何分类下的日志甚至是页面从搜索结果中排除掉。

function SearchFilter($query) {
if ($query->is_search) {
$query->set(‘cat’,’0,1′);
}     return $query;
}

add_filter(‘pre_get_posts’,’SearchFilter’);

(Via wprecipes )

2. 搜索特定的某个日志分类

这将从特定的分类中返回搜索结果:

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. 搜索某一特定的日志类型

仅搜索特定的日志类型,而将其他所有类型过滤掉。

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');

(Via ashbluewebdesign )

4. 高亮WordPress搜索关键词(使用JQuery)

在WordPress搜索结果页面高亮显示关键词。将下面这段函数放到主题的functions.php文件中:

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>的前面:

<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>

(Via weblogtoolscollection )

5. 显示搜索结果条目数量

返回搜索结果数量。例如 – 对“twitter”的搜索结果数量为 – 8 篇日志。

<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>');  
echo $key; _e('</span>'); _e(' &mdash; ');  
echo $count . ' '; _e('articles'); wp_reset_query();  
    ?>  
</h2>

(Via wpbeginner )

原文: Hongkiat

 

 

纯Linux环境、免备案【海外简单云】php空间,108元一年起。

 

网上创业步骤】:
1 开通云主机、域名  2 建设官方网站 3 整体网站推广 … 成功见证 创业技能素质培训

更多有价值的内容:

简单主机官方网站 www.simplehost2.com

简单主机官方网店 store.simplehost2.com

简单主机官方相册 gallery.simplehost2.com

简单主机官方博客 blog.simplehost2.com

QQ空间
腾讯微博
新浪微博
网易微博
搜狐微博
人民网微博
微信公众号
朋友网
淘宝网
豆瓣网
百度空间
新华微博
优酷网
人人网
开心网
天涯社区
简单云,简单主机,简单建站

微信号:simplehost

扫一扫,了解更多…