META_COMPARE不比较整数

时间:2014-04-01 作者:rafsuntaskin

我已经通过表单向我的自定义搜索页面提交了一个整数数据。如果输入是单字符(例如1),我可以正确地获得值,但如果输入是多字符(例如100),它仍然与“1”进行比较。

如果用户输入为1 我得到了所有带有自定义字段值的帖子More than 1.但是如果输入是100 结果是一样的。

为什么会发生这种情况

这是我的代码:

$i_rate = $_GET["interest_rate"];

                $bc_args = array(

                    \'post_type\' => \'data\',
                    \'data-category\'=>\'insurance-rate\',
                    \'order\' => \'DESC\',
                    \'meta_key\' => \'interest_rate\',
                    \'meta_value\' =>$i_rate,
                    \'meta_compare\' => \'>=\',
                    \'orderby\' => \'meta_value_num\',

                );

                 $sortedPosts = new WP_Query($bc_args);

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

您可以尝试以下方法:

$bc_args = array(
    \'post_type\'      => \'data\',
    \'data-category\'  =>\'insurance-rate\',
    \'order\'          => \'DESC\',
    \'orderby\'        => \'meta_value_num\',
    \'meta_query\' => array(
        array(
            \'key\'     => \'interest_rate\',
            \'value\'   => (int) $i_rate,
            \'type\'    => \'numeric\',
            \'compare\' => \'>=\'
        ),
    )
);

$sortedPosts = new WP_Query( $bc_args );
其中,我们使用数字type.

您还应该考虑使用filter_input 而不是$_GET:

$i_rate = filter_input( INPUT_GET, \'i_rate\', FILTER_SANITIZE_NUMBER_INT );
或者本地人add_query_var / get_query_var 方法

附言:data-category 不是中的本机参数WP_Query()

结束

相关推荐

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

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