php Gravity Forms API中忽略开始和结束日期

jogvjijk  于 2023-09-29  发布在  PHP
关注(0)|答案(2)|浏览(99)

我正在使用Gravity Forms API返回一个条目列表。它几乎工作正常,唯一的问题是开始和结束日期被忽略了。

$form_id                = isset($_GET['form-id']) ? $_GET['form-id'] : '';
$form                   = GFAPI::get_form($form_id);
$start_date             = isset($_GET['start-date']) ? $_GET['start-date'] : '';
$end_date               = isset($_GET['end-date']) ? $_GET['end-date'] : '';

$entries = GFAPI::get_entries($form_id, array(
    'status' => array('active'),
), array(), array(
    'start_date' => $start_date,
    'end_date' => $end_date,
    'page_size' => 1000,
    'offset' => 0
));

不是只返回日期范围内的项,而是返回所有结果。
我已经通过导出表单的所有条目确认了这一点,并且可以看到始终有170个条目,并且在2023-01-01和2023-03-01之间有15个条目,因此基于此URL应该只返回15个条目:
https://example.com/wp-admin/admin.php?start-date=2023-01-01&end-date=2023-03-01&page=gravity-stuff&form-id=1
查询字符串中的日期格式正确。
我做错了什么?

0vvn1miw

0vvn1miw1#

如果您确定start_date和end_date日期格式与Gravity Forms条目中使用的格式匹配
例如,如果它是Y-m-d H:i:s,请确保查询字符串中的日期格式与之匹配,您可以像下面这样更正格式

$start_date = date('Y-m-d 00:00:00', strtotime($start_date)); 
$end_date = date('Y-m-d 23:59:59', strtotime($end_date));

同样你的$_GET ['start-date']可能没有被填充,我的意思是isset返回false(服务器php设置),检查你是否可以将流更改为

$start_date             = isset($_GET['start-date']) ? $_GET['start-date'] : '';
$end_date               = isset($_GET['end-date']) ? $_GET['end-date'] : '';

$start_date             = isset($_GET['start-date']) ? $_GET['start-date'] : '2023-01-01  00:00:00';
$end_date               = isset($_GET['end-date']) ? $_GET['end-date'] : '2023-03-01  23:59:59';

所以如果isset($_GET ['start-date'])返回false,它将设置日期。
你可以通过php.ini文件中的register_globals打开$_GET填充(这个问题在NginX服务器上很常见)
记住Y-m-d H:i:s格式是我假设的,你必须检查重力表单条目中使用的格式。

nwsw7zdq

nwsw7zdq2#

谢谢,我是这样做的

'status' => array('active'),
'field_filters' => array(
    array(
        'key' => 'date_created',
        'operator' => 'between',
        'value' => array($start_date, $end_date),
    ),
),
), array(), array(
    'page_size' => 1000
));

相关问题