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

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

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

  1. $form_id = isset($_GET['form-id']) ? $_GET['form-id'] : '';
  2. $form = GFAPI::get_form($form_id);
  3. $start_date = isset($_GET['start-date']) ? $_GET['start-date'] : '';
  4. $end_date = isset($_GET['end-date']) ? $_GET['end-date'] : '';
  5. $entries = GFAPI::get_entries($form_id, array(
  6. 'status' => array('active'),
  7. ), array(), array(
  8. 'start_date' => $start_date,
  9. 'end_date' => $end_date,
  10. 'page_size' => 1000,
  11. 'offset' => 0
  12. ));

不是只返回日期范围内的项,而是返回所有结果。
我已经通过导出表单的所有条目确认了这一点,并且可以看到始终有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,请确保查询字符串中的日期格式与之匹配,您可以像下面这样更正格式

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

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

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

  1. $start_date = isset($_GET['start-date']) ? $_GET['start-date'] : '2023-01-01 00:00:00';
  2. $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#

谢谢,我是这样做的

  1. 'status' => array('active'),
  2. 'field_filters' => array(
  3. array(
  4. 'key' => 'date_created',
  5. 'operator' => 'between',
  6. 'value' => array($start_date, $end_date),
  7. ),
  8. ),
  9. ), array(), array(
  10. 'page_size' => 1000
  11. ));

相关问题