Wordpress搜索多个数据库字段

时间:2014-01-12 02:06:14

标签: wordpress

我无法让这段代码正常工作。如果语法不正确,我道歉。我正在与一个已经使用主题的客户端合作,我正在尝试相应地修改它。客户端是租赁物业经理,需要单个搜索自由格式文本字段来遍历地址,城市,州和邮政编码,以查找匹配或匹配搜索输入字段。到目前为止我没有工作,只是返回所有属性,无论搜索条件如何。我不是特别肯定我在这里做错了什么,并希望对此有所了解。

if ( get_query_var('paged') ) {
$paged = get_query_var('paged');
} else if ( get_query_var('page') ) {
$paged = get_query_var('page');
} else {
$paged = 1;
}
$args = array(
 'post_type' => 'property',
 'paged' => $paged
);
if(isset($_GET['search_keyword'])) {
 if($_GET['search_keyword']) {
  $args['meta_query'][] = array(
   'relation'=>'or',
   array (
    'key' => 'pyre_address',
    'value' => $_GET['search_keyword'],
    'compare' => 'LIKE',
    'type' => 'CHAR'
   ),
   array(
    'key' => 'pyre_state',
    'value' => $_GET['search_keyword'],
    'compare' => 'LIKE',
    'type' => 'CHAR'
   ),
  array(
  'key' => 'pyre_city',
  'value' => $_GET['search_keyword'],
  'compare' => 'LIKE',
  'type' => 'CHAR'
 ),
 array(
  'key' => 'pyre_zip',
  'value' => $_GET['search_keyword'],
  'compare' => 'LIKE',
  'type' => 'CHAR'
 )
);

}
}

query_posts($args);
if(have_posts()):

1 个答案:

答案 0 :(得分:1)

只需删除查询中的[]:

$args['meta_query'] = array( // correct line, the [] has to be removed

仅供参考,在char中指定类型会将值转换为WHERE语句中的CHAR(请参阅CAST。由于在Wordpress中,在表wp_postmeta中,列meta_value在VARCHAR中,我认为它没用指定它,它只会减慢您的查询速度。

我希望我能理解:)

另请查看LIKE以及'%keyword%'和'keyword'

之间的区别