【问题标题】:Custom Wordpress Database Query自定义 Wordpress 数据库查询
【发布时间】:2014-07-10 20:17:43
【问题描述】:

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

这是表格代码

 <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。 我需要让这个查询搜索所有参数,例如,如果用户决定只使用一个字段,则只搜索一个。查询后我有循环工作正常,所以我没有粘贴它。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 您面临的问题是什么。 ?
  • 您需要添加与 post_meta 和分类表的连接以进行关系和搜索。

标签: wordpress search


【解决方案1】:

检查提供的变量并根据变量是否传递来构建查询:

$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}");

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2012-04-27
    • 2015-08-04
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    相关资源
    最近更新 更多