WordPress搜索功能的二次升级
发布:smiling 来源: PHP粉丝网 添加日期:2014-06-21 16:32:35 浏览: 评论:0
WordPress搜索功能只能完成基本的搜索,如果我希望对搜索结果进行一些操作就不能实现了,下面我找到一博客中写到可以对搜索进行如 显示标题数 高亮搜索文本等功能.
默认的搜索结果中是不会显示结果文章数的,可能对一些人来说会需要这个结果数,要在搜索结果中显示文章数,很简单,你只需要编辑search.php,找到如下代码:
<h1>Search Results</h1> 替换为如下代码内容:
- <h1><?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(' — ');
- echo $count . ' '; _e('篇文章');
- wp_reset_query(); ?></h1>
关于搜索结果中显示数目的demo,可以看看本博客的搜索页面,虽然不一样但基本上差不多,在搜索列表文章标题中高亮搜索文本,高亮搜索文文能够使搜索者准确的看到想要知道的内容,依然编辑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',
- '<strong></strong>',
- $title);
- ?>
- <h2><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>" rel="bookmark">
- <?php echo $title; ?>
- </a></h2>
然后在你的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中,代码如下:
- <?php if( is_search() ) :
- $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
- query_posts("s=$s&paged=$paged&cat=1,2,3");//cat的值就是分类的ID
- endif; ?>
完全禁用搜索功能
虽然搜索是个很有用的功能,但是有时候强迫症的你就是想禁用它,那么你只需要把下面的代码放到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,找到下面的代码:
- <?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(); ?>
Tags: WordPress 搜索功能 显示条数
相关文章
- ·WordPress初级教程1:什么是博客?(2013-11-11)
- ·WordPress初级教程-2: 什么是WordPress?(2013-11-11)
- ·WordPress初级教程-3: WordPress的功能和特点(2013-11-11)
- ·WordPress初级教程-4: 选择WordPress博客的主机和域名(2013-11-11)
- ·WordPress初级教程-5: 安装WordPress(2013-11-11)
- ·WordPress初级教程-6: 本地安装WordPress(2013-11-11)
- ·WordPress初级教程-7: 一个数据库中安装多个WordPress博客(2013-11-11)
- ·WordPress初级教程-8: WordPress控制面板/ Dashboard(2013-11-11)
- ·WordPress初级教程-9: WordPress用户设置/ Users(2013-11-11)
- ·WordPress初级教程-10: WordPress博客配置/ Settings(2013-11-11)
- ·关于wordpress上传图片不显示的原因(2013-11-11)
- ·WordPress程序的脆弱点你知道吗 (2013-11-11)
- ·总结八大Wordpress网站百度收录实现秒收的方法绝招 (2013-11-11)
- ·WordPress如何网站投稿者也可以上传图片(2014-03-18)
- ·WordPress怎么修改新用户注册邮件内容(2014-03-18)
- ·WordPress怎么添加前台注册功能(2014-03-18)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)