【wordpress搜索功能】WordPress搜索功能的二次升级

更新时间:2019-05-13    来源:WordPress    手机版     字体:

【www.bbyears.com--WordPress】

最近我伸爪向制作主题去了,所以最近可能弄很多关于Wordpress主题开发的文章

o(?□?)o

太多原创是指望不上了

在搜索标题中显示标题数

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

 代码如下


1

Search Results


替换为

/* Search Count */
$allsearch = &new WP_Query("s=$s&showposts=-1");
$key = wp_specialchars($s, 1);
$count = $allsearch->post_count; _e("");
_e("");
echo $key; _e("的搜索结果"); _e(" — ");
echo $count . " "; _e("篇文章");
wp_reset_query(); ?>

关于搜索结果中显示数目的demo,可以看看本博客的搜索页面。虽然不一样但基本上差不多。。。

在搜索列表文章标题中高亮搜索文本

高亮搜索文文能够使搜索者准确的看到想要知道的内容。。。

SO,依然编辑search.php,找到你的文章输出loop

 代码如下


" title="" rel="bookmark">
         
         


替换为


    $title = get_the_title();
    $keys= explode(" ",$s);
    $title = preg_replace("/(".implode("|", $keys) .")/iu",
        "",
        $title);
?>
       

" title="" rel="bookmark">
         
         


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


strong.search-excerpt { background: blue; }

当搜索结果只有一篇时直接重定向到该文章

这个我记得奶嘴还是谁写过来着。。。

用下面的方法可以很方便的实现当搜索结果只有一篇时直接重定向到该文章,编辑你的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 ) );
        }
    }
}

demo可以看水煮鱼的博客,他那个就是自动跳转的

更改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_posts_per_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中

 代码如下
$paged = (get_query_var("paged")) ? get_query_var("paged") : 1;
query_posts("s=$s&paged=$paged&cat=1,2,3");//cat的值就是分类的ID
endif; ?>

查看分类的id号的方法可以移步《[技巧]查看页面/媒体的ID》

完全禁用搜索功能

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

 代码如下 function fb_filter_query( $query, $error = true ) {
    if ( is_search() ) {
        $query->is_search = false;
        $query->query_vars[s] = false;
        $query->query[s] = 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,找到下面的代码

 代码如下




替换为




 继续闷头苦干

本文来源:http://www.bbyears.com/wangyezhizuo/50910.html