为什么查询不返回归档帖子?

问题描述 投票:1回答:2

我正在使用“存档的帖子状态”插件来制作帖子存档。这是这个插件的链接:Archive post status

我正在尝试在两个日期之间获取存档帖子:开始日期和结束日期,使用wordpress查询。开始日期和结束日期来自url,我带着$ _GET。这是我的代码:

$startDate = $_GET['startdate'];
$endDate = $_GET['enddate'];
$firstDayOfMonth = date(“Ym01”, strtotime($_GET[‘startdate’]));
$lastDayOfMonth = date(“Ymt”, strtotime($_GET[‘enddate’]));

$arguments = [
  'posts_per_page' => 10,
  'post_status' => 'archive',
  'post_type' => 'agenda',
  'meta_query' => [
       'relation' => 'AND',
       [
          'key' => 'date',
          'compare' => '>=',
          'value' => $firstDayOfMonth,
       ],
       [
          'key' => 'date',
          'compare' => '<=',
          'value' => $lastDayOfMonth,
       ]
   ] 
];

如果我删除带有开始日期和结束日期的元查询,则查询会返回归档帖子,但使用元查询时,它不会返回任何内容。

php wordpress
2个回答
0
投票
$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

这样做我希望这项工作。 with array()

参考: - Link

'relation' => 'AND',
        array(
            'key'     => '_my_custom_key_2',
            'value'   => 'Value I am looking for 2',
            'compare' => '='
        ),
        array(
            'key'     => '_my_custom_key_3',
            'value'   => 'Value I am looking for 3',
            'compare' => '='
        )

0
投票

首先,你比较字符串值(meta_query理解date键,如字符串),而不是数字,所以你需要比较元数值,如数字(为了更好的准确性格式日期秒从1970年开始(如果可能的话,使用strtotime()))。

要说WordPress元值必须比较它是数字,只需添加参数'type' => 'NUMERIC''type' => 'DECIMAL(10,3)'(浮点数)。

您的参数数组示例:

$args = [
  'posts_per_page' => 10,
  'post_status' => 'archive',
  'post_type' => 'agenda',
  'meta_query' => [
       [
          'key' => 'date',
          'type' => 'DECIMAL(10,3)',
          'compare' => 'BETWEEN',
          'value' => array($firstDayOfMonth,$lastDayOfMonth)
       ]
   ] 
];

此外,在放置数组值value的开始和结束日期之前,请务必使用intval()作为日期变量。

© www.soinside.com 2019 - 2024. All rights reserved.