根据自定义字段值查询帖子

时间:2015-11-04 作者:Andy Simpson

当前正在构建网站,需要创建“时间表”,以显示在特定时间播放的演示者。

使用ACF插件输入演示者播放的时间,将自定义字段值保存为时间戳。

由于某些原因,我无法通过查询显示某个时间正在播放的演示者。与当前时间戳相比,它似乎只显示具有最高时间戳值的演示者。下面是代码的简化版本。

<?php $args = array(
    \'post_type\' => \'presenter\',
    \'posts_per_page\' => \'1\',
    \'meta_key\' => \'on_air\',
    \'orderby\' => \'meta_value_num\',
    \'order\' => \'DESC\'

);


$airquery = new WP_Query( $args ); ?>

<?php if ( $airquery->have_posts() ) : while ( $airquery->have_posts() ) : $airquery->the_post(); ?>

    <?php
        $now = strtotime(date(\'d-m-Y H:i:s\')); // get current timestamp
        $stored_value = get_field(\'on_air\');   // The saved post timestamp comparing to current timestamp
    ?>

    <?php if( $now > $stored_value )
        {
            echo the_title();
        }
    ?>

<?php endwhile; endif; wp_reset_postdata(); ?>
如您所见,我正在以post类型查询帖子,并希望按meta值排序,这似乎也不起作用。

我返回的只是时间戳值大于当前时间戳的帖子。

一切都很奇怪。不知道我是否需要以某种方式获得所有帖子的价值,然后比较$stored_value 现在到美元了吗?

任何帮助都会很好!

1 个回复
SO网友:s_ha_dum

为什么不拉一个你需要的帖子,而不是拉一个帖子然后检查元键的值呢?

$now = strtotime(date(\'d-m-Y H:i:s\')); // get current timestamp

$args = array(
    \'post_type\' => \'presenter\',
    \'posts_per_page\' => \'1\',
    \'order\' => \'DESC\',
    \'meta_query\' => array(
        array(
            \'key\'     => \'on_air\',
            \'value\'   => $now,
            \'compare\' => \'>=\',
        ),
    ),
);

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在