获取具有两个数字之间的元值的帖子

时间:2019-03-08 作者:Tomasz Walas

有问题meta_query_args.

<?php
$money_form = 0;
$money_form = $_POST[\'search_option_money\'];

if( $money_form != 0 ){
    $meta_query_args =  array(
        array(
            \'key\'     => $money_form,
            \'value\'   => array(
                \'offer_money_start\',
                \'offer_money_end\'
            ),
            \'type\'    => \'decimal\',
            \'compare\' => \'BETWEEN\' ///BETWEEN
        ),
    );
} else {
    //
}

$myquery = new WP_Query( array(
    \'post_type\'      => \'mycredit\',
    \'posts_per_page\' => -1,
    \'orderby\'        => \'rand\',
    \'meta_query\'     => $meta_query_args
) );
我需要从开始到结束的所有报价,但我没有结果。我不知道为什么?

一切正常谢谢:)

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

你的问题不清楚,但我做出以下假设:

用户正在提交$_POST[\'search_option_money\'];mycredit 发布位置$_POST[\'search_option_money\']; 介于offer_money_startoffer_money_end 自定义字段key 和value 元查询的参数。这个key 是自定义字段的名称,并且value 是您正在搜索的值。

此外BETWEEN 元查询是指您希望根据介于两个指定值之间的元键的值查找帖子,而不是根据介于两个单独元键之间的值查找帖子。

如果要查找给定值介于两个单独元键之间的帖子,需要两个单独的元查询:

$query_args = [
    \'post_type\'      => \'mycredit\',
    \'posts_per_page\' => -1
    \'orderby\'        => \'rand\',
];

if ( isset( $_POST[\'search_option_money\'] ) ) {
    $money_form = $_POST[\'search_option_money\'];

    $query_args[\'meta_query\'] = [
        \'relation\' => \'AND\',
        [
            \'key\'     => \'offer_money_start\',
            \'value\'   => $money_form,
            \'compare\' => \'>=\',
            \'type\'    => \'DECIMAL\',
        ],
        [
            \'key\'     => \'offer_money_end\',
            \'value\'   => $money_form,
            \'compare\' => \'<=\',
            \'type\'    => \'DECIMAL\',
        ],
    ]
}

$my_query = new WP_Query( $query_args );
这将查询表单中提交值大于offer_money_start 自定义字段,但小于offer_money_end 自定义字段。

我还对代码进行了格式化,以便只有在$_POST[\'search_option_money\'] 存在。您当前的代码将分配meta_query 如果未定义变量,则返回到未定义变量。

最后,POST请求不适合获取数据,这就是搜索或筛选所做的。您的表单应使用GET 方法,以及$_POST 应该是$_GET.

相关推荐

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

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