我遇到了使用operator生成sql查询的麻烦。实际上是这段代码:
$args = array(
'post_type' => 'listings',
'posts_per_page' => 10,
'paged' => $paged,
'meta_query' => array(
//CITY
array(
'key' => 'city',
'value' => $city,
'compare' => 'LIKE'
),
//type
array(
'key' => 'type',
'value' => $type,
'compare' => 'LIKE'
),
//PRICE
array(
'key' => 'price',
'value' => array( 100, 5000 ),
'compare' => 'BETWEEN'
),
)
);
此代码工作正常,但现在,我需要在price
和$start
或$end
之间获取price = -1
的帖子。换句话说,未设置价格或设置为-1
的帖子必须在查询中显示。其他条件(城市,类型等)必须与AND
有什么想法吗?谢谢!
答案 0 :(得分:0)
我最初的想法是在posts_where或posts_join上添加一个过滤器,以便在查询中注入自定义SQL条件。
这些方面的东西:
wp_postmeta.meta_key='price' AND
(wp_postmeta.meta_value='-1' OR
CAST(wp_postmeta.meta_value AS INT) BETWEEN $start AND $end)