如何在meta_query()中使用LIKE

时间:2018-04-25 09:25:30

标签: php wordpress

出于某种原因,我的LIKE参数似乎不起作用。如果我使用=,则此查询有效。

阵列:

$ref_query = array(       
  'meta_key' => 'reference_code',
  'value' => array($ref),
  'compare' => 'LIKE'       
);

这个小数组是其他几个数组的一部分,它们被推入下一行:

$query->set( 'meta_query', $meta_query);

所有其他数组的工作正常,包括其运算符(> =,< = etc)。

编辑:看起来这确实有效但是我的结果是通过帖子ID排序的,因为我希望首先从查询返回结果。

2 个答案:

答案 0 :(得分:1)

当您仅使用比较搜索文本时,如果您想使用数组,我们需要在meta_query中预先知道它和关系。

代码演示:

$meta_query[0] = array('relation' => 'OR');
$all_meta = array('type','Brand','companyname','contactperson','phone','website','openinghours','coffeemachine'/*,'map_location'*/,'map-address1','map-address2','map-address3','map-zip','map-state','map-city','price');
foreach ($all_meta as $meta) {
    $meta_query[0][] = array(
        'key'     => $meta,
        'value'   => $custom_key,
        'compare' => 'LIKE'
        );
    }           

答案 1 :(得分:0)

改为使用meta_compare

WP_Query

  

meta_compare(string) - 测试'meta_value'的运算符。可能的值为'=','!=','>','> =','<','< =','LIKE','NOT LIKE','IN','NOT IN ','BETWEEN','not BETWEEN','NOT EXISTS','REGEXP','NOT REGEXP'或'RLIKE'。默认值为'='。

文档中的示例:

$args = array(
    'meta_key'     => 'color',
    'meta_value'   => 'blue',
    'meta_compare' => '!='
);
$query = new WP_Query( $args );