我创建了一个包含代码的自定义搜索页面
<?php
function filter_where( $where = '' ) {
$where .= " AND post_date >= '{$_GET['frmdate']}' AND post_date < '{$_GET['todate']}'";
return $where;
}
add_filter( 'posts_where', 'filter_where');
$query = new WP_Query( array( 'post_type' => 'post' ) );
while( $query->have_posts() ) : $query->the_post(); ?>
<p><?php the_title(); the_date() ?></p>
<?php endwhile; ?>
<?php remove_filter( 'posts_where', 'filter_where' ); wp_reset_query(); ?>
我的目标是在“两个日期”之间使用'关键字'搜索帖子
我的搜索变量通过 url 像这样
www.something.com?page_id=372&s12=lorem&s13=ipsum&frmdate=2012-03-01&todate=2012-06-12
使用我的当前代码来过滤两个日期之间的结果,当我的网址看起来像www.something.com?page_id=372&frmdate=2012-03-01&todate=2012-06-12
当我添加&s=lorem
时,关键字和日期过滤都不起作用。即使我单独添加它(&amp; s = lorem)
答案 0 :(得分:0)
您可能只想更改WP模板层次结构中可用的搜索模板,而不是使用自定义页面。有关详细信息,请参阅this post。
答案 1 :(得分:0)
使用下面的更新了我的代码,我的所有要求都正常工作,不确定是否有另一种更智能的方法
<?php
function filter_where( $where = '' ) {
if(isset($_GET['frmdate']) && isset($_GET['todate'])){
$where .= " AND post_date >= '{$_GET['frmdate']}' AND post_date < '{$_GET['todate']}'";
}
if(isset($_GET['s12'])){
$where .= " AND post_content LIKE '%{$_GET['s12']}%' " ;
}
if(isset($_GET['s13'])){
$where .= " AND post_title LIKE '%{$_GET['s13']}%' " ;
}
//echo $where;exit;
return $where;
}
add_filter( 'posts_where', 'filter_where');
$query = new WP_Query( array( 'post_type' => 'post' ) );
while( $query->have_posts() ) : $query->the_post(); ?>
<li>
<h4><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h4>
<div class="monthDate"> <span class="date"><?php the_time('M d,Y H.i'); ?></span> <span class="month"><?php comments_number();?></span> </div>
<p><?php content('100'); ?></p>
</li>
<?php endwhile; ?>
<?php remove_filter( 'posts_where', 'filter_where' ); wp_reset_query(); ?>