使用META_QUERY按‘PRICE’筛选循环

时间:2017-11-20 作者:Marcelo Henriques Cortez

我需要根据用户指定的“价格”的最大值和最小值筛选页面上的帖子。

我把数据库中注册的物品的“价格”记为“longchar”。

用户输入要在中筛选的“价格”input type=text.

过滤部分似乎不起作用,没有发生任何实际情况。

例如,如果用户希望查看从87欧元开始到5000,00欧元为止的所有项目,则循环如下:

$adsAll = array(
    \'post_type\'  => $postType,
    \'meta_key\' => $metaKey,
    \'orderby\' => $orderBy,
    \'order\' => $order,
    \'posts_per_page\' => $PostsPerPage,
    \'meta_query\' => array(
        \'key\' => \'preco_anuncio\',
        \'value\' => array(\'8700\',\'500000\'),
        \'compare\' => \'between\',
        ),
    );
我从输入中获取值,去掉所有逗号和点,然后使用这些值进行过滤。我这样做是因为插入到数据库中的值既没有逗号也没有点。

知道问题出在哪里吗?

当我使用相同的键“preco\\u anuncio”从最昂贵的到较便宜的进行筛选时,它会起作用。

1 个回复
最合适的回答,由SO网友:Marcelo Henriques Cortez 整理而成

好的,找到问题了。

我不得不补充\'type\' => \'numeric\', 到我的查询。

So the final code looks like:

$adsAll = array(
    \'post_type\'  => $postType,
    \'meta_key\' => $metaKey,
    \'orderby\' => $orderBy,
    \'order\' => $order,
    \'posts_per_page\' => $PostsPerPage,
    \'meta_query\' => array(
        array(
            \'key\' => \'preco_anuncio\',
            \'value\' => array(\'8700\',\'500000\'),
            \'compare\' => \'between\',
            \'type\'    => \'numeric\',
            ),
        ),
    );

结束