如何从有帖子的[规范年]获得去年?

时间:2018-05-25 作者:Peter Westerlund

我有一个这样的年度档案:

◀;2010 - - - - - - - - - - - 2011 - - - - - - - - - - - 2012 ►;

首先,我有一个想法,没有帖子的一年与“找不到帖子”的文本是同一页。但我遇到了麻烦,因为没有内容的页面会重定向到404。这让我意识到这实际上是最好的。它对搜索引擎优化更加友好。

所以我开始思考如何解决分页问题。如果2010年没有任何帖子,我就有了这个想法。该年份数字将只是灰色文本,而不是链接。而去年的帖子将是以前的链接。像这样:

◀;2009 ... 2010年----2011 - - - - - - - - - - - 2012 ►;

The question: 我如何以最快的方式从某个有帖子的年份中找到最后一年?

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

您可以查询当前查看年份之前发表的单个帖子。按日期降序(默认)排序时,第一个结果将来自最近一年的帖子。

$current_year = get_query_var( \'year\' );

$previous_posts = get_posts( array(
    \'numberposts\' => 1,
    \'date_query\'  => array(
        \'year\'    => $current_year,
        \'compare\' => \'<\',
    ),
) );

if ( ! empty( $previous_posts ) ) {
    $previous_year = get_the_time( \'Y\', $previous_posts[0] );
}
您也可以通过帖子获得下一年,但您需要交换顺序,否则您将获得最新帖子的年份:

$next_posts = get_posts( array(
    \'numberposts\' => 1,
    \'order\'       => \'ASC\',
    \'date_query\'  => array(
        \'year\'    => $current_year,
        \'compare\' => \'>\',
    ),
) );

if ( ! empty( $next_posts ) ) {
    $next_year = get_the_time( \'Y\', $next_posts[0] );
}

结束

相关推荐

Need help with pagination

我在计算分页时遇到了一个问题。使用我在这里找到的信息Wordpress Pagination Not Working - Always Showing First Pages Content 线程,我已成功在页面上设置分页。代码如下所示:<?php $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; $args = array( \'posts_per_page\' => 10