web-dev-qa-db-ja.com

「投稿がある[spec year]から昨年」を取得する方法?

私はこのような年のアーカイブを持っています:

2010 - - - - - - - - - - - 2011 - - - - - - - - - - - 2012

そして最初に、投稿がない年と同じページに "投稿が見つかりません"というテキストが表示されることを思いつきました。しかし、内容のないページは404にリダイレクトされるので、私はそれで悩みました。そしてそれは私にそれが実際に最高であることを認識させました。それはよりSEOフレンドリーです。

それで私はどのようにしてページネーション状況を解決するかについて考え始めました。 2010年に投稿がない場合は、このアイデアを得ました。その年の番号は単なる灰色のテキストでリンクではありません。そして、投稿がある昨年は前のリンクになります。このような:

2009... 2010 - - - - - 2011 - - - - - - - - - - - 2012

質問:投稿がある特定の年からどのようにして最後の年を見つけるのですか。

1

現在表示されている年より前に行われた単一の投稿に対してクエリを実行できます。日付で降順にソートされている場合(デフォルト)、最初の結果は投稿のある最新の年からのものになります。

$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] );
}
1
Jacob Peattie