用数值筛选WP_QUERY META_QUERY不起作用

时间:2013-05-07 作者:Ryan Giglio

这是一个非常密集的标题。

我有一个自定义帖子类型“event”,它有一个日期/时间选择器字段“event\\u Date”,这要归功于高级自定义字段插件。此日期/时间选择器将UNIX时间戳保存到数据库中。我正在尝试使用WP\\u Query获取今天或将来的所有事件。这是我现在掌握的代码:

$args = Array(
    \'post_type\'         => \'event\',
    \'posts_per_page\'    => -1,
    \'meta_key\'          => \'event_date\',
    \'orderby\'           => \'meta_value_num\',
    \'order\'             => \'ASC\',
    \'meta_query\'        => array(
                \'key\'       => \'event_date\',
                \'compare\'   => \'>=\',
                \'value\'     => intval(strtotime(date(\'Y-m-d\'))),
                \'type\'      => \'numeric\'
    ),
);

$query = new WP_Query( $args );
它给了我所有的事件,过去和未来。

我意识到时间戳是以字符串形式存储在数据库中的,所以“compare”(比较)通常不起作用,但我在Google和Codex上读到的“type”(键入)=>“numeric”(数字)应该将字符串转换为整数,并允许它与我今天早上午夜的值进行比较。不幸的是,这似乎不起作用,我不明白为什么。

2 个回复
最合适的回答,由SO网友:Kailey Lampert 整理而成

在元查询中尝试数组。

$args = Array(
    \'post_type\'         => \'event\',
    \'posts_per_page\'    => -1,
    \'meta_key\'          => \'event_date\',
    \'orderby\'           => \'meta_value_num\',
    \'order\'             => \'ASC\',
    \'meta_query\'        => array(
         array(
                \'key\'       => \'event_date\',
                \'compare\'   => \'>=\',
                \'value\'     => intval(strtotime(date(\'Y-m-d\'))),
                \'type\'      => \'numeric\'
         )
    ),
);

$query = new WP_Query( $args );

SO网友:user91935

哇,你用这个答案拯救了我的一天,我试图通过名为type\\u price的自定义数字字段筛选帖子,我正试图这样做:

\'meta_query\' => array(
    array(
        \'key\' => \'type_price\',
        \'value\' => array( 0, 500000 ),
        \'compare\' => \'BETWEEN\',
        \'type\' => \'NUMERIC\',
 )),
但应该这样做ASC:

array(
   \'posts_per_page\' => -1, 
   \'meta_key\' => \'type_price\', 
   \'orderby\'  => \'meta_value_num\', 
   \'order\' => \'ASC\', 
       \'meta_query\' => array(
           array(
                \'key\' => \'type_price\',
                \'value\' => array( 0, 500000 ),
                \'compare\' => \'BETWEEN\',
                \'type\' => \'NUMERIC\',
            )
        )),
非常感谢:)

结束

相关推荐

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

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

用数值筛选WP_QUERY META_QUERY不起作用 - 小码农CODE - 行之有效找到问题解决它

用数值筛选WP_QUERY META_QUERY不起作用

时间:2013-05-07 作者:Ryan Giglio

这是一个非常密集的标题。

我有一个自定义帖子类型“event”,它有一个日期/时间选择器字段“event\\u Date”,这要归功于高级自定义字段插件。此日期/时间选择器将UNIX时间戳保存到数据库中。我正在尝试使用WP\\u Query获取今天或将来的所有事件。这是我现在掌握的代码:

$args = Array(
    \'post_type\'         => \'event\',
    \'posts_per_page\'    => -1,
    \'meta_key\'          => \'event_date\',
    \'orderby\'           => \'meta_value_num\',
    \'order\'             => \'ASC\',
    \'meta_query\'        => array(
                \'key\'       => \'event_date\',
                \'compare\'   => \'>=\',
                \'value\'     => intval(strtotime(date(\'Y-m-d\'))),
                \'type\'      => \'numeric\'
    ),
);

$query = new WP_Query( $args );
它给了我所有的事件,过去和未来。

我意识到时间戳是以字符串形式存储在数据库中的,所以“compare”(比较)通常不起作用,但我在Google和Codex上读到的“type”(键入)=>“numeric”(数字)应该将字符串转换为整数,并允许它与我今天早上午夜的值进行比较。不幸的是,这似乎不起作用,我不明白为什么。

2 个回复
最合适的回答,由SO网友:Kailey Lampert 整理而成

在元查询中尝试数组。

$args = Array(
    \'post_type\'         => \'event\',
    \'posts_per_page\'    => -1,
    \'meta_key\'          => \'event_date\',
    \'orderby\'           => \'meta_value_num\',
    \'order\'             => \'ASC\',
    \'meta_query\'        => array(
         array(
                \'key\'       => \'event_date\',
                \'compare\'   => \'>=\',
                \'value\'     => intval(strtotime(date(\'Y-m-d\'))),
                \'type\'      => \'numeric\'
         )
    ),
);

$query = new WP_Query( $args );

SO网友:user91935

哇,你用这个答案拯救了我的一天,我试图通过名为type\\u price的自定义数字字段筛选帖子,我正试图这样做:

\'meta_query\' => array(
    array(
        \'key\' => \'type_price\',
        \'value\' => array( 0, 500000 ),
        \'compare\' => \'BETWEEN\',
        \'type\' => \'NUMERIC\',
 )),
但应该这样做ASC:

array(
   \'posts_per_page\' => -1, 
   \'meta_key\' => \'type_price\', 
   \'orderby\'  => \'meta_value_num\', 
   \'order\' => \'ASC\', 
       \'meta_query\' => array(
           array(
                \'key\' => \'type_price\',
                \'value\' => array( 0, 500000 ),
                \'compare\' => \'BETWEEN\',
                \'type\' => \'NUMERIC\',
            )
        )),
非常感谢:)

相关推荐

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

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