为啥查询不返回存档帖子?

Posted

技术标签:

【中文标题】为啥查询不返回存档帖子?【英文标题】:Why doesn't the query return archived posts?为什么查询不返回存档帖子? 【发布时间】:2018-08-30 07:51:59 【问题描述】:

我正在使用“存档帖子状态”插件来存档帖子。这是这个插件的链接: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,
       ]
   ] 
];

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

【问题讨论】:

看起来您使用文字处理器编辑了这段代码!这些引号 无效,请改用" 还有$_GET['startdate'];$_GET['endate'];是以什么格式传递给你的? 我们需要您通过$_GET 请求收到的日期格式来调试此代码。 $_GET 收到的日期格式是“Ymd”,例如“20180509” 你的单引号也应该是' 【参考方案1】:
$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

这样做我希望这个工作。 用数组()

参考:- 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' => '='
        )

【讨论】:

【参考方案2】:

首先,您比较字符串值(meta_query 理解date 类似字符串的键),而不是数字,因此您需要比较类似数字的元值(例如,为了在格式日期秒数中从 1970 年起更准确(使用 strtotime())如果可能)。

要说 WordPress 元值必须像数字一样进行比较,只需添加参数 'type' =&gt; 'NUMERIC''type' =&gt; '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() 作为日期变量。

【讨论】:

以上是关于为啥查询不返回存档帖子?的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义帖子名称自动创建一个链接,该链接返回到自定义帖子存档页面(包括主题 slug)

无法获取自定义分类存档页面以显示帖子

按月获取用户帖子的存档 Wordpress

如何为自定义帖子类型存档页面创建导航

为啥查询不返回值?

PHP:PDO查询不返回结果,但在phpmyadmin中同样的查询返回4个结果?