自定义Wordpress数据库查询

时间:2014-07-10 20:17:43

标签: wordpress search

我正在尝试创建一个自定义过滤器,它将在三个参数中查询数据库 - 发布内容,元值和分类术语。

这是表单代码

 <form role="search" method="get" class="search-form" action="<?php echo home_url( '/' ); ?>/search-results">

 <div class="search_jobs">
 <?php do_action( 'job_manager_job_filters_search_jobs_start', $atts ); ?>

 <div class="item">
 <input type="text" name="keyword" placeholder="Keyword" />
 </div>

 <div class="item">

 <input type="text" name="location"  placeholder="All Locations" />
 </div>

<div class="item">
<label for="search_categories"><?php _e( 'Category', 'wp-job-manager' ); ?></label>
<?php wp_dropdown_categories( array( 'taxonomy' => 'job_listing_category', 'hierarchical' => 1, 'show_option_all' => __( 'All Job Categories', 'wp-job-manager' ), 'name' => 'search_categories', 'orderby' => 'name' ) ); ?>
</div>

<div class="search-s">
<input type="submit" class="search-submit" value="Search" />
</div>
</div>
</form> 

这是我到目前为止的查询

<?php
$s_key = $_GET['keyword'];
$s_loc = $_GET['location'];
$s_cat = $_GET['search_categories'];

global $wpdb;

$searchquery = $wpdb->get_results( 
"
SELECT * FROM wp_posts WHERE 1

AND post_status = 'publish' AND post_type = 'job_listing'

AND post_content LIKE '%$s_key%' AND meta_value LIKE '%$s_loc%' 
"
);
?>

重要的是,关键字只是一个纯文本输入字段,它会在帖子内容中搜索关键字。它以这种方式工作正常。 位置是元值,键名为_job_location。 搜索类别是分类术语的下拉列表。分类法称为job_listing_category。 我需要让此查询搜索所有参数,例如,如果用户决定仅使用一个字段,则只需查询一个参数。在查询后我有循环工作正常所以我没有粘贴它。

非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

检查提供的变量并根据变量是否通过构建查询:

$query = ' 1=1 ';
if($s_key){ $query .= " AND post_content LIKE '%$s_key%'"; }
if($s_loc){ $query .= " AND meta_value LIKE '%$s_loc%'"; }

global $wpdb;

$searchquery = $wpdb->get_results( "SELECT * FROM wp_posts WHERE {$query}");