WordPressで先週の投稿を表示する方法

初心者レベルの読者の多くはすぐにWordPressテーマの変更を始めます。そのため、初心者の方々が始めやすいようにWordPressテーマチートシートを用意しています。これは、新規ユーザーにとっていくつかの興味深い課題をもたらします。最近、そのような読者の一人が、先週の投稿をWordPressに表示する方法を尋ねてきました。彼らは、前の週の投稿を表示するセクションをホームページに追加したかっただけです。この記事では、WordPressで先週の投稿を表示する方法を説明します。

前週の投稿を表示する方法を示す前に、まずWP_Queryを使用して現在の週の投稿を表示する方法を見てみましょう。以下のコードをテーマのfunctions.phpファイルまたはサイト固有のプラグインにコピーして貼り付けます。

function wpb_this_week() { 
$week = date('W');
$year = date('Y');
$the_query = new WP_Query( 'year=' . $year . '&w=' . $week );
if ( $the_query->have_posts() ) : 
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <h2><a href="<?php the_permalink(); ?>" title="Permanent link to <?php the_title(); ?> "><?php the_title(); ?></a></h2>
	<?php the_excerpt(); ?>
  <?php endwhile; ?>
  <?php wp_reset_postdata(); ?>
<?php else:  ?>
  <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif;
}

上記のコード例では、まず現在の週と年を調べました。次に、それらの値をWP_Queryで使用して現在の週の投稿を表示しました。これで、投稿を表示したいテーマファイルに<?php wpb_this_week(); ?>を追加するだけです。

これは簡単でしたね?これで先週の投稿を表示するには、週の値から1を引くだけです。しかし、もしそれがその年の最初の週であれば、週の値は0になり、昨年ではなく今年が表示されます。その問題を解決する方法は次のとおりです。

function wpb_last_week_posts() { 
$thisweek = date('W');
if ($thisweek != 1) :
$lastweek = $thisweek - 1;   
else : 
$lastweek = 52;
endif; 
$year = date('Y');
if ($lastweek != 52) :
$year = date('Y');
else: 
$year = date('Y') -1; 
endif;
$the_query = new WP_Query( 'year=' . $year . '&w=' . $lastweek );
if ( $the_query->have_posts() ) : 
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <h2><a href="<?php the_permalink(); ?>" title="Permanent link to <?php the_title(); ?> "><?php the_title(); ?></a></h2>
	<?php the_excerpt(); ?>
  <?php endwhile; ?>
  <?php wp_reset_postdata(); ?>
<?php else:  ?>
  <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif;

}

上記のサンプルコードでは、2つのチェックを配置しました。最初のチェックは、現在の週の値が1の場合に、前週の値を52(年の最後の週)に設定します。2番目のチェックは、前週の値が52の場合に、年の値を前年に設定します。

先週の投稿を表示するには、表示したいテーマのテンプレートファイルに<?php wpb_last_week_posts(); ?>を追加するだけです。または、ページやウィジェットに追加できるショートコードが必要な場合は、上記のコードの下にこの行を追加してください。

add_shortcode('lastweek', 'wpb_last_week_posts');

このショートコードを投稿、ページ、またはウィジェットで次のように使用できるようになりました。

[lastweek]

カスタムクエリを作成するために、必ずしもWP_Queryが必要なわけではありません。WordPressには、最新の投稿アーカイブコメントなどを表示するのに役立つ関数がいくつか用意されています。既存の関数を使用する方が簡単な方法がある場合は、独自のクエリを作成する必要はありません。

この記事がWordPressで先週の投稿を表示するのに役立ったことを願っています。コードを試して、ニーズに合わせて変更してください。ご不明な点がございましたら、下記にコメントを残すか、Twitterでご参加ください。

開示:当社のコンテンツは読者によってサポートされています。これは、当社のリンクの一部をクリックすると、当社が手数料を得る可能性があることを意味します。WPBeginnerがどのように資金提供されているか、それがなぜ重要か、そしてどのように私たちをサポートできるかについては、こちらをご覧ください。当社の編集プロセスはこちらです。

究極のWordPressツールキット

無料のツールキットにアクセスしましょう - すべてのプロフェッショナルが持つべきWordPress関連の製品とリソースのコレクションです!

読者とのインタラクション

8 CommentsLeave a Reply

  1. 週の投稿をいつ/なぜ表示したいのか興味がありますか?私のホームページでは、抜粋を表示しているので、過去2週間程度の投稿が表示されます。ここで何を見逃していますか?ありがとう!

    • 必要ありません。しかし、他のウェブサイトの所有者の中には、前週の投稿を個別に表示したいレイアウトを持っている場合があります。このチュートリアルは、そのようなユーザーを支援することを目的としています。

      管理者

返信を残す

コメントを残していただきありがとうございます。すべてのコメントは、当社のコメントポリシーに従ってモデレーションされますので、ご了承ください。メールアドレスは公開されません。名前フィールドにキーワードを使用しないでください。個人的で有意義な会話をしましょう。