按照最接近当前日期的顺序按日期排列帖子

时间:2012-01-16 作者:Dwayne Charrington

我在客户网站上有一个事件列表,显示在侧边栏中。查看主页时,你会看到一个事件,如果你在网站的其他任何地方,你会在侧边栏中看到两个事件。我目前正在使用meta\\u查询比较对它们进行排序,该查询比较检查事件是今天还是将来。

我想做的是让事件首先以最接近当前日期的方式显示,然后沿着链继续,直到找到一个为止。目前,它显示的是未来最远的事件。因此,如果我有一个2012年1月27日的事件和一个2012年8月15日的事件,它似乎显示了八月的事件。

我目前拥有的代码如下。如果能给我一些建议,让它按照我想要的方式工作,我将不胜感激。如果可能的话,请对您发布的任何代码进行一点解释,我希望这是一次学习体验。

$totalPosts = 2;

    $args = array(
        \'post_type\'        => \'upcoming_courses\',
        \'order\'            => \'ASC\',
        \'orderby\'          => \'meta_value\',
        \'suppress_filters\' => true,
        \'posts_per_page\'   => $totalPosts,
        \'numberposts\'      => $totalPosts,
        \'meta_query\' => array(
          array(
            \'key\' => \'course_date\',
            \'value\' => date(\'Y-m-d\'),
            \'compare\' => \'>=\',
            \'type\' => \'NUMERIC\'
          )
        )
    );

    $my_query  = new WP_Query( $args );

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

这只是在黑暗中拍摄,但我会尝试按降序排列事件,而不是按升序排列。\'order\' => \'DESC\'

SO网友:jave.web

我知道这很旧,但是ordering by DESC does not make sense for this case.

您选择DATEs>= CURRENT_DATE, 现在,您希望首先显示最接近今天的,比如明天,然后后天。。。

什么是更大的日期?Tomorrowday after tomorrow? 我不知道你怎么样,但我敢打赌tomorrow < day after tomorrow, 因此,订购DESC意味着您将在后天首先获得,因为它更大。

我认为你真正的问题是打字(我假设你把日期存储在Y-m-d 也设置格式。。。

告诉我WP_Query: “我正在处理日期”:。说订购应该通过键入最新信息来完成

\'meta_type\' => \'DATE\',

2。假设比较应该通过键入最新内容来完成

\'meta_query\' => [
  [
    \'key\' => \'course_date\',
    \'value\' => date(\'Y-m-d\'),
    \'compare\' => \'>=\',
    \'type\' => \'DATE\' //!important!
  ]
],

。。。然后很简单:

\'orderby\' => \'meta_value\',
\'order\' => \'ASC\',

。。。应该可以正常工作:)

结束

相关推荐

orderby ignored by wp_query

使用以下代码,我不会得到按标题排序的结果集。无论我给“orderby”和“order”赋予什么值,我都会得到相同的排序。参数似乎被忽略(或覆盖?)通过其他方式。。知道我如何解决这个问题吗?是否有一个特定的过滤器,我应该看看,一些插件可以通过覆盖这个?下面的代码是否应该开箱即用?如果它看起来是正确的,一定有什么东西在干扰。$args = Array( \'post_type\' => \'post\' \'category_name\' => \'reviews\