WP_Query $ args和比较运算符

时间:2013-09-24 14:05:29

标签: sql wordpress operators

我遇到了使用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

匹配

有什么想法吗?谢谢!

1 个答案:

答案 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)