如何在WP_QUERY中使用元值比较获取最大值和最小值

时间:2012-07-26 作者:dev-jim

我正在使用WP\\u Query for visitor来过滤帖子。这些帖子是关于产品的。因此,在过滤器中,它有一个字段,用户可以在其中选择最高价格和最低价格。(就像大多数购物网站一样)。

好的,这是我用来收集用户输入的筛选表单:

 <lable>Min. Price ($)</lable> 
 <select name="minprice">
 <option value="0">0</option>
 <option value="100">100</option>
 <option value="200">200</option>
 <option value="300">300</option>
 .....
 </select>

 <lable>Max. Price ($)</lable> 
 <select name="maxprice">
 <option value="100">100</option>
 <option value="200">200</option>
 <option value="300">300</option>
 <option value="400">400</option>
 .......
 </select>
这是处理输入的函数:

function filter_search() {
    $max = $GET_[\'maxprice\'];
    $min = $GET_[\'minprice\'];

    $args = array(
        \'post_type\' => \'product\',
        \'meta_query\' => array(
            array(
                \'key\' => \'price\',
                \'value\' => array( $min, $max ), //this is the line where i cant figure out how.
                \'compare\' => \'BETWEEN\'
            )
        )
    );

    $searched_posts = new WP_Query( $args);

    return $searched_posts;
}
将数组用于要比较的值是否正确?

1 个回复
SO网友:Howdy_McGee

这看起来不错,我有非常类似的代码,可以按预期工作:

function price_query_test() {

    update_post_meta( 7, \'_price\', 10 );
    update_post_meta( 12, \'_price\', 20 );
    update_post_meta( 18, \'_price\', 30 );
    update_post_meta( 72, \'_price\', 40 );

    $test = new WP_Query( array(
        \'post_type\'     => \'page\',
        \'meta_query\'    => array( array(
            \'key\'       => \'_price\',
            \'value\'     => array( \'10\', \'25\' ),
            \'compare\'   => \'BETWEEN\',
        ) ),
        \'fields\' => \'ids\',
    ) );

    printf( \'<pre>%s</pre>\', print_r( $test->posts, 1 ) );
    die();

}
add_action( \'init\', \'price_query_test\' );
上面给出了一个数组:

Array
(
    [0] => 12
    [1] => 7
)
如果我们想,我们还可以添加meta_query a类型:

\'meta_query\'    => array( array(
    \'key\'       => \'_price\',
    \'value\'     => array( \'10\', \'25\' ),
    \'compare\'   => \'BETWEEN\',
    \'type\'      => \'NUMERIC\',
) )
但如果没有meta_type.

如果您使用的是WooCommerce,请注意它们的元值是_pricenot price.

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post