选择早于当前Unix纪元时间戳的帖子

时间:2014-09-14 作者:mannaia

我正在尝试执行以下查询,这是因为帖子的“日期”和“时间”是作为单独的自定义字段输入的。

$args = array(
      \'post_type\' => \'some_kind_of_posts\',
      \'posts_per_page\' => 3,
      \'orderby\' => \'meta_value_num\',
      \'meta_key\' => strtotime(\'date\'. \' \' .\'time\'),
      \'order\' => \'DESC\',
      \'meta_query\' => array(
           array(
                \'key\' => strtotime(\'date\'. \' \' .\'time\'),
                \'value\' => strtotime(date(\'H:i\',time() + 3600*2))
                \'compare\' => \'<\',
                ),
      ),
);
$query = new WP_Query( $args );
换句话说,我需要首先将“日期”和“时间”结合起来,以便选择比当前时间早的帖子。后者被转换为Unix epoch时间戳(这是一个好选项吗?)。

我在别处查过了strtotime(get_field(\'date\'). \' \' .get_field(\'time\'))strtotime(date(\'H:i\',time() + 3600*2)) 通过回显它们,并以秒为单位获得预期的Unix纪元时间。

然而,键值比较失败:我无法选择比当前时间早的帖子。

非常感谢您提供有关如何解决此问题的任何提示。

1 个回复
SO网友:rockschtar

这段代码应该可以解决您的问题:

function filter_where($where = \'\') {
    $where .= " AND post_date < \'" . date(\'Y-m-d\') . "\'";
    return $where;
}

add_filter(\'posts_where\', \'filter_where\');
$query = new WP_Query(array(\'posts_per_page\' => 3));
remove_filter(\'posts_where\', \'filter_where\');

结束

相关推荐

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

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