限制wordpress 只搜索某个分类下的文章
对于搜索功能,我们自己建网站时,都需要使用。在之前的建站教程中,我们也讲到了如何制作 wordpress搜索功能。
通常的搜索功能是搜索整个网站的所有文章,但在实际建站过程中,往往需要限制wordpress 只搜索某个分类下的文章,这该怎么做呢?
方法如下:
普通的搜索功能代码:
<form action="<?php bloginfo('home'); ?>" method="get">
<input type="text" value="<?php echo wp_specialchars($s, 1); ?>" name="s" id="s" />
<input type="submit" id="searchsubmit" value="Search" />
</form>
只需要在上面的代码里加上一个隐藏域,给出某个分类的ID即可。修改后的搜索代码:
<form action="<?php bloginfo('home'); ?>" method="get">
<input type="text" value="<?php echo wp_specialchars($s, 1); ?>" name="s" id="s" />
<input type="hidden" name="cat" value="1" />
<input type="submit" id="searchsubmit" value="Search" />
</form>
代码中value="1",可以改成自己限定的分类ID。
高级用法
可以通过限制分类的搜索,来制作让用户选择分类的搜索内容。
<select name="cat" class="search-option">
<option value="11" selected="selected">搜音乐</option>
<option value="22">搜图片</option>
</select>
补充:
有的同学反映通过加cat参数,不能限定指定分类的文章搜索,如果出现这种情况,就可以在搜索模板search.php里添加限制内容,用以下的代码。
<?php if (have_posts()) :
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("s=$s&paged=$paged&cat=2,3,-20");?>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink(); ?>" ><?php the_title(); ?></a></li>
<?php endwhile;?>
<?php endif; wp_reset_query(); ?>