是否在与QUERY_POSTS中的META_QUERY进行比较之前检查是否设置了字段?

时间:2013-04-01 作者:Drath

我设置了一个查询来比较一些自定义字段的开始日期和结束日期。岗位需要填写开始日期;但是,结束日期不是。这会导致以下问题:

query_posts(
    array (
        \'meta_query\' =>
            array(
                array(
                    \'key\' => \'start_date\',
                    \'value\' => $date,
                    \'compare\' => \'>=\',
                    \'type\' => \'DATE\',
                ),
                array(
                    \'key\' => \'end_date\',
                    \'value\' => $enddate,
                    \'compare\' => \'<=\',
                    \'type\' => \'DATE\',
                ),
            )
    )
);
当在帖子上设置了结束日期时,此查询工作正常;然而,如果没有,该帖子将根本不会被查询。在执行<;=日期比较?

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

我知道如何在纯SQL中做到这一点,但我无法让WP\\U查询以所需的方式嵌套条件。

如果可以接受的话,最简单的方法就是在数据保存到数据库时指定一个任意的未来结束日期。类似于strtotime("2038-01-01").

这有点像黑客,但核心函数应该可以工作,您不需要编写自己的SQL。使用这样的固定日期意味着,如果2038年到来,并且您发现需要,您可以很容易地找到并更改到期日期,或者如果WP_Query 修补以处理所需的查询逻辑。

结束

相关推荐

在wp_INSERT_POST()之后,DATE_I18N()和DATE()输出将调整为GMT

我在客户服务器(vps)上遇到了一个非常奇怪的问题。下面的代码在我的服务器上运行良好。基本上,特定的unix时间戳格式正确,只要调用wp\\u insert\\u post(),日期就会调整为GMT。例如:echo \"date_i18n of 1366495200: \" . date_i18n(\'Y-m-d H:i\', 1366495200 ). \'<br />\'; echo \"date of 1366495200: \" . date(\'Y-m-d H:i\', 13