`

增强WordPress的原生搜索

阅读更多

访问了很多朋友用wordpress做的博客,很多人都是用google来代替原生的搜索功能,对一些访问量比较大的博客来说,可能Wordpress内置的原生搜索是Wordpress的缺点之一。在这篇文章中,整理了一些代码片段,这会使你的Wordpress原生搜索变得好很多。

 

在搜索标题中显示标题数

默认的搜索结果中是不会显示结果文章数的。可能对一些人来说会需要这个结果数,要在搜索结果中显示文章数,很简单,你只需要编辑主题中的search.php
找到

<h1 class="search-title">Search Results</h1>

替换为

<h1 class="search-title"><?php 
/* Search Count */ 
$allsearch = &new WP_Query("s=$s&showposts=-1"); 
$key = wp_specialchars($s, 1); 
$count = $allsearch->post_count; _e(''); 
_e('『<strong>'); 
echo $key; _e('</strong>』的搜索结果'); _e('&gt;&nbsp;<strong>'); 
echo $count . '</strong>&nbsp;'; _e('篇文章'); 
wp_reset_query(); ?></h1>

<h1 class="search-title">"< ?php the_search_query();?>"的搜索结果共<strong>< ?php
  global $wp_query;
  echo $wp_query->found_posts;
?></strong>篇</h1>
在搜索列表文章标题中高亮搜索文本

这会让你的搜索结果更加友好:高亮搜索文文
依然编辑search.php,找到你的文章输出loop

<h2><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>" rel="bookmark">
          <?php the_title(); ?>
          </a></h2>

替换为

<?php
    $title = get_the_title();
    $keys= explode(" ",$s);
    $title = preg_replace('/('.implode('|', $keys) .')/iu',
        '<span class="search-excerpt">\0</span>',
        $title);
?>
        <h2><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>" rel="bookmark">
          <?php echo $title; ?>
          </a></h2>

然后在你的css中加入下面的样式

span.search-excerpt { background: #ffc; }
当搜索结果只有一篇时直接重定向到该文章

用下面的方法可以很方便的实现当搜索结果只有一篇时直接重定向到该文章,编辑你的functions.php并加入以下代码

add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
    if (is_search()) {
        global $wp_query;
        if ($wp_query->post_count == 1) {
            wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
        }
    }
}
更改Wordpress搜索结果每页显示文章数

WordPress默认的搜索结果是每页显示十篇文章,如果你想更改的话,只需要把下面的代码加到functions.php中并修改数量。

function limit_posts_per_search_page() {
    if ( is_search() )
        set_query_var('posts_per_archive_page', 20); 
}
add_filter('pre_get_posts', 'limit_por_search_page');
搜索结果限制文章格式

如果你的主题支持多种文章格式并且你想在搜索结果中只输出一种格式,你只需要把下面的代码放到functions.php,并修改你想要显示的文章格式名称

function SearchFilter($query) {
  if ($query->is_search) {
    // 输入你想要显示的文章格式
    $query->set('post_type', 'feeds');
  }
  return $query;
}
add_filter('pre_get_posts','SearchFilter');
只搜索指定分类

做到这个很简单,只需要修改下面代码的分类ID号并加入到search.php中

<?php if( is_search() )  :
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("s=$s&paged=$paged&cat=1,2,3");
endif; ?>
完全禁用搜索功能

虽然搜索是个很有用的功能,但是有时候强迫症的你就是想禁用它,那么你只需要把下面的代码放到functions.php中

function fb_filter_query( $query, $error = true ) {
    if ( is_search() ) {
        $query->is_search = false;
        $query->query_vars = false;
        $query->query = false;

        // to error
        if ( $error == true )
            $query->is_404 = true;
    }
}

add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );
在一页中显示所有搜索结果

前面已经提到,默认搜索结果每页显示10篇,如果你想让结果在一页里显示,只需要编辑search.php,找到下面的代码

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

替换为

<?php $posts=query_posts($query_string . '&posts_per_page=-1'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
分享到:
评论

相关推荐

    红色WordPress博客主题

    也可能支持评论系统,如Disqus或WordPress原生评论,鼓励访客参与讨论。 考虑到WordPress的插件生态系统,该主题应该与许多流行插件兼容,如Yoast SEO(用于搜索引擎优化)、Contact Form 7(用于创建联系表单)和...

    wordpress主题HTML5WordPress主题:H5

    3. **优化的SEO性能**:HTML5的语义化标签有助于搜索引擎更好地理解网站内容,从而提高搜索引擎排名。 4. **改进的用户体验**:利用HTML5的新特性(如表单控件增强),可以让表单填写过程更加直观易用。 ### 使用...

    Wordpress Magazines模板

    9. **用户评论系统**:为了鼓励用户参与讨论,Magazines模板可能内置了评论系统,如Disqus或WordPress原生评论,同时支持评论者的头像和社交账号关联。 10. **翻译和多语言支持**:为了拓展国际读者群体,模板可能...

    修改WordPress链接顺序和排序的方法

    总的来说,尽管WordPress的原生链接管理功能可能不足以满足所有需求,但是通过安装合适的插件,我们可以轻松地增强这一功能,使链接管理变得更加灵活和高效。因此,对于那些希望深入定制WordPress链接展示方式的用户...

    matlab改变代码字体-wp-syntaxhighlighter-evolved:http://wordpress.org/plugins/

    "wp-syntaxhighlighter-evolved"就是这样一个插件,它增强了原生的SyntaxHighlighter Evolved,允许用户在发布包含MATLAB代码的博客文章时,对代码的显示样式进行自定义,包括更改代码字体。这个插件对于那些经常...

    WP简约博客模板Chen v1.2

    7. **内置评论系统**:支持WordPress原生评论系统,也可集成第三方评论插件如Disqus。 8. **社交媒体整合**:与各大社交媒体平台集成,方便分享和关注。 9. **颜色和字体选择**:提供多种配色方案和字体选择,满足...

    卢松松主题模板下载

    6. **评论系统**:卢松松主题可能会集成评论功能,如Disqus或WordPress原生评论,鼓励读者参与讨论,增强社区氛围。 7. **个性化设置**:提供多种颜色方案、字体选择和其他视觉选项,让用户可以根据自己的喜好调整...

    首页 中式 触摸切换产品 WP模版

    5. **CSS3动画**:为了增强触摸切换的效果,模版可能运用了CSS3的过渡(Transitions)和动画(Animations),使得产品在切换时有平滑的视觉效果。 6. **SEO优化**:一个高质量的WP模版应该考虑搜索引擎优化(SEO)...

    wp中文博客koobox主题

    支持集成常见的评论插件,如Disqus或WordPress原生评论系统,鼓励读者互动,增强社区氛围。 8. **加载速度优化** 速度快是优质博客的重要指标,Koobox主题通过代码优化和延迟加载技术,提高了页面加载速度,降低...

    bigvideo:一个结合了视频力量的 WordPress 主题

    "大视频"主题是这个生态系统的一部分,它扩展了WordPress的原生功能,特别是在视频集成方面。 JavaScript是一种广泛使用的客户端脚本语言,它在网页上提供了动态交互性。在"大视频"主题中,JavaScript起到了至关...

    kotonoha-tena-bbpress-enhance

    2. **功能扩展**:增加了BBPress的原生功能,比如用户积分系统、论坛统计、高级搜索选项、用户通知和提醒等,提升用户的参与度和活跃度。 3. **性能优化**:可能通过代码优化提高了BBPress的运行速度,减少数据库...

    分类信息网站源码

    9. **移动应用支持**:考虑到移动设备的普及,开发iOS和Android的APP版本,提供原生的用户体验,增强用户粘性。 10. **SEO优化**:为了提升网站在搜索引擎中的排名,需要进行关键词优化、元标签设置、URL结构规划等...

    蓝色汽车电器公司企业网页模板

    7. **SEO优化**:网页模板在设计时也需考虑搜索引擎优化(SEO),包括元标签的设置、关键词的分布、页面加载速度等,以提高网站在搜索引擎结果页的排名,吸引更多的自然流量。 8. **内容管理系统**:对于非技术人员...

    Smartertemplates 公司模版

    7. **SEO优化**:一个好的公司模版会考虑搜索引擎优化(SEO),包括合理的元标签、结构化数据标记和友好的URL结构,以提高网站在搜索结果中的排名。 8. **内容管理系统集成**:有些模版可能已经预设了与流行CMS...

    IT公司网站模版

    1. **PSD文件**:Photoshop Document(PSD)是Adobe Photoshop的原生文件格式,它允许设计师保存所有图层、通道、蒙版、文字等信息,便于后续编辑和调整。在IT公司网站模版的上下文中,PSD文件意味着用户可以利用...

    OBLOG 思念

    8. **评论系统**:博客通常有评论功能,"OBLOG 思念"可能内置了Disqus或类似的第三方评论系统,或者使用原生的评论功能,便于用户交流。 9. **插件支持**:为了扩展功能,模版可能兼容各种WordPress或其它CMS系统的...

    漂亮紫色博客网站模板

    9. **评论系统**:为鼓励互动,模板可能包含评论功能,如Disqus或WordPress原生评论系统,便于读者发表意见和博主回应。 10. **数据分析**:可能集成Google Analytics或其他分析工具,以便博主跟踪网站流量、用户...

    手机wrap网站仿Haier海尔家电家居触屏版html5响应式手机wap企业网站模板

    3. **易于维护**:相比传统的原生应用程序,基于Web的解决方案更容易进行更新和维护。 4. **成本效益**:相比于开发多个版本的应用程序,创建一个响应式的网站更加经济高效。 ### 三、商业资料与软件/插件 #### ...

    渔夫俱乐部网站模板

    【渔夫俱乐部网站模板】是一种专门针对渔夫俱乐部或钓鱼爱好者社区设计的网页模板,它旨在为这类组织或...最后,确保所有内容符合SEO(搜索引擎优化)最佳实践,以便提升网站在搜索结果中的可见性,吸引更多的访问者。

Global site tag (gtag.js) - Google Analytics