本日在做一个WordPress项目标时候,客户要求对wordpress默认的搜索成果举办修改,要求凭据作者,凭据文章标题,以及凭据文章内容,这三个条件举办搜索。实现起来也较量简朴,为了防备今后会用到所以来总结一下。
首先说下添加的要领,一是本身建设一个搜索框出来,二是利用wordpress默认的搜索框。代码如下:
<?php get_search_form(); ?> //直接利用默认搜索框放到你需要显示的处所即可<form method="get" id="searchform" action=http://down.chinaz.com/"<?php echo $_SERVER['PHP_SELF']; ?>">
<input name="s" id="s" type="text" class="text" />
<input id="searchsubmit" type="submit" class="submit" value=" " />
</form>
//本身手动建设,需要留意的是内里的name="s" id="s" 这个是必需有的,并且是不能改的。
//假如改了的话wordpress就获取不到你要搜索的内容了。
添加好之后,你需要建设一个search.php文件出来,用来显示搜索内容,假如不建设它会在index.php内里显示,不外发起各人建设出来便于本身界说。建设好之后就可以在内里添加显示代码。默认的显示要领是
<?php if ( have_posts() ) : ?><?php while ( have_posts() ) : the_post(); ?>
<div><a href=http://down.chinaz.com/"<?php echo get_permalink($post->ID); ?>"><?php the_title(); ?></a></div>
<?php endwhile; ?>
<?php else : ?>
<article>
<header class="entry-header">
<h1 class="entry-title"><?php _e( '没有找到该文章', 'leizi' ); ?></h1>
</header>
<div class="entry-content">
<p><?php _e( '歉仄没有找到该文章', 'leizi' ); ?></p>
<?php get_search_form(); ?>
</div>
</article>
<?php endif; ?>
假如你想本身界说搜索显示内容,不利用默认显示要领。下面是磊子本身简朴写了一段。
<form method="get" id="searchform" action=http://down.chinaz.com/"<?php bloginfo('home'); ?>"><div style=""><input name="s" id="s" type="text" /></div>
<div style="width:55px;"><input id="searchsubmit" type="submit" value=" " /></div>
<div></div>
<div><label><input value="title" name="sosearch" type="radio" checked="checked" />按标题</label> <label><input value="users" name="sosearch" type="radio" />按作者</label> <label><input value="posts" name="sosearch" type="radio" />按全文</label></div>
</form>
//上面这一段放到需要显示的处所。下面这一段是放在search.php文件内里
<?php
$resault = $_GET['s']; //获取搜索内容
$tiaoj = $_GET['sosearch']; //获取搜索条件,上面写到凭据标题,作者,全文
if($tiaoj == "users")
{
//通过搜索条件来判定显示的内容,第一个是按文章作者搜索显示
$user_info = $wpdb->get_results("SELECT * FROM $wpdb->users WHERE display_name like '%".$resault."%'");
if(!empty($user_info))
{
foreach($user_info as $key => $val)
{
$posts_info = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'post' and post_status = 'publish' and post_author = '".$val->ID."'");
foreach($posts_info as $k=>$v)
{
?>
<li><span><?php the_time('Y-m-d'); ?></span><a href=http://down.chinaz.com/"<?php echo get_permalink($v->ID); ?>"><?php echo $v->post_title; ?></a></li>
<?php
}
}
}
else
{
echo "<li>歉仄,没有找到切合搜索条件的内容!</li>";
}
}
elseif($tiaoj == "title")
{
//凭据文章标题举办显示
$posts_info = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'post' and post_status = 'publish' and post_title like '%".$resault."%'");
if(!empty($posts_info))
{
foreach($posts_info as $k=>$v)
{
?>
<li><span><?php the_time('Y-m-d'); ?></span><a href=http://down.chinaz.com/"<?php echo get_permalink($v->ID); ?>"><?php echo $v->post_title; ?></a></li>
<?php
}
}
else
{
echo "<li>歉仄,没有找到切合搜索条件的内容!</li>";
}
}
elseif($tiaoj == "posts")
{
//凭据文章内容举办显示
$posts_info = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'post' and post_status = 'publish' and post_content like '%".$resault."%'");
if(!empty($posts_info))
{
foreach($posts_info as $k=>$v)
{
?>
<li><span><?php the_time('Y-m-d'); ?></span><a href=http://down.chinaz.com/"<?php echo get_permalink($v->ID); ?>"><?php echo $v->post_title; ?></a></li>
<?php
}
}
else
{
echo "<li>歉仄,没有找到切合搜索条件的内容!</li>";
}
}
或许结果如下: