3

我已经创建了一个自定义帖子类型,它具有三种分类法。我想使用关键字(按用户类型)和三个分类下拉列表框创建一个搜索表单。

只有三个列表框搜索给了我正确的搜索结果。当我添加用户类型文本框时购买。现在有结果了。

下面的代码不起作用。

$list = array();
  $item = array(); 
  foreach($_GET as $key => $value){
  if($key == 's'){
  $item['s'] = htmlspecialchars($key);
  $item['keyword'] = htmlspecialchars($value);
  $list[] = $item;
  }
  if($value != '' && $key != 's'){
  $item['taxonomy'] = htmlspecialchars($key);
  $item['terms'] = htmlspecialchars($value);
  $item['field'] = 'slug';
  $list[] = $item;
  } 
  } 
  $cleanArray = array_merge(array('relation' => 'AND'), $list);
  $args['post_type'] = 'listings';
  $args['showposts'] = 12;
  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  $args['paged'] = $paged; 
  $args['tax_query'] = $cleanArray; 
$the_query = new WP_Query( $args ); //data is sanitized inside wp_query class
4

1 回答 1

0

我通过改变我的代码得到了答案,如下所示。

global $query_string;

$query_args = explode("&", $query_string);
$search_query = array();

foreach($query_args as $key => $string) {
    $query_split = explode("=", $string);
    $search_query[$query_split[0]] = $query_split[1];
} // foreach
$args = array(
    'post_type' => 'listings',
    's' => $search_query['s'],

    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'type',
            'field' => 'slug',
            'terms' => $search_query['type']
        ),
        array(
            'taxonomy' => 'rooms',
            'field' => 'slug',
            'terms' => $search_query['rooms']
        )
    )
);
$the_query = new WP_Query($args);
于 2013-01-17T08:36:14.463 回答