gpt4 book ai didi

php - WordPress get_posts() 比较meta_query 中的时间戳问题

转载 作者:行者123 更新时间:2023-12-04 16:48:06 31 4
gpt4 key购买 nike

早上好。我在运行 get_posts() 时无法将作为元键返回的时间戳(作为字符串返回)与当前时间戳进行比较.

我想通过 end_date_time 获取任何帖子设置在 future ,我得到了一些奇怪的行为。我正在使用高级自定义字段和高级自定义字段:日期和时间选择器来设置时间。

这是我的代码:

$time = time();

$args = array(
'post_type' => 'webinars',
'posts_per_page' => -1,
'meta_key' => 'date',
'orderby' => array('meta_value_num' => 'ASC', 'title' => 'ASC'),
'meta_query' => array(
array(
'key' => 'end_date_time',
'value' => $time,
'compare' => '>='
),
),
);

$webinars = get_posts($args);

如果这样设置,查询不会返回任何结果。我知道有一个帖子的 future 时间戳设置为删除 meta_query显示它,我可以获得保存的时间戳。 (它被保存为一个字符串)。

将字符串与 meta_query 中的数字进行比较是否存在问题? ?有没有办法转换 end_date_timeint在做比较之前?

在将时间传递到 $args 之前,我也尝试将时间转换为字符串,但似乎没有什么区别。

有没有其他人遇到过这个问题?

更新

我修改了 $time变量使用过去的时间是这样的:
$time = time()-43200;

这样做后,查询似乎工作正常。如果我设置 end_date_time到 future 它将显示在循环中,如果我将其设置为过去,它将从循环中删除。似乎有某种时间差异导致了这种情况。如果没有调整时间,两小时后发生的事件会消失,但调整后它们会保持显示。当它们几小时大时,它们仍然会根据需要消失。

为什么这适用于调整后的时间戳 $time = time()-43200; ,但不是 $time = time(); ?

最佳答案

如果您使用 native ACF 的日期时间选择器,您应该只添加类型 DATETIME给您的 meta_query并确保您的 value具有所需的格式 yyyy-mm-dd hh:mm:ss .

'meta_query' => array(
array(
'key' => 'end_date_time',
'value' => date('Y-m-d H:i:s', $time),
'compare' => '>=',
'type' => 'DATETIME'
),
),

查询 Date Time Picker和 WP Meta Queries文档。

关于php - WordPress get_posts() 比较meta_query 中的时间戳问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881252/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com