現在表示中の記事を除外した記事一覧を表示する方法【WordPress】

WordPressの個別投稿ページ内で、「最近の投稿」一覧を表示したい場合があるかと思います。

この場合、記事一覧をそのまま取得してしまうと、現在閲覧中の記事も含まれてしまいますね。

そこで今回の記事では、現在表示中の記事を除外した最新記事一覧を出力する方法を紹介していきます。

目次

【コピペ用】現在表示中の記事を除外した記事一覧を表示するコード

まずはコピペ用のコード一式を紹介します。

コードを理解できる方は、そのままコピペしてお使いください。

個別記事ページ内での使用を想定しているので、single.phpもしくはsingle-投稿タイプ名.phpファイル内に記述してください。

<?php
$current_post_id = get_the_ID(); // 現在表示中の記事IDを取得

$args = [
  "post_type" => 'post', // 投稿タイプを指定
  "posts_per_page" => 10, // 表示する記事数を指定
  "post__not_in" => [$current_post_id] // 除外する記事のIDを指定
];
$post_query = new WP_Query($args);
?>

<div class="posts">
  <?php if ($post_query->have_posts()) : ?>
    <ul>
      <?php while ($post_query->have_posts()) : $post_query->the_post(); ?>
        <li>
          <a href="<?php the_permalink(); ?>">
            <?php the_title(); ?>
          </a>
        </li>
      <?php endwhile; ?>
    </ul>
  <?php endif;
  wp_reset_postdata(); ?>
</div>

これで、現在閲覧中の記事を除いた、最新の記事一覧を取得することができます。

次で詳しい解説をしていきますので、コードを理解したい方はこのまま読み進めてください。

【解説】現在表示中の記事を除外した記事一覧を表示するコードの解説

ここからは実装コードを順番に解説していきます。

  1. 現在表示中の記事のIDを取得する
  2. post__not_inで現在表示中の記事を除外する
  3. 記事一覧を出力する

手順1. 現在表示中の記事のIDを取得する

まずは、現在開いている記事ページのIDを取得する必要があります。

表示中のページIDは、以下のようにして取得することができます。

<?php get_the_ID(); ?>

このIDは記事を除外する時に使うので、変数に格納しておきます。

<?php $current_post_id = get_the_ID(); ?>

これでcurrent_post_idという変数には、現在表示中の記事IDが入っている状態です。

手順2. post__not_inで現在表示中の記事を除外する

記事一覧の表示には、WP_Queryを使用します。

このクラスには引数を指定することができ、その中の"post__not_in"に先ほど取得した記事IDを指定することで、現在表示中の記事を除外します。

<?php
$args = [
  "post_type" => 'post', // 投稿タイプを指定
  "posts_per_page" => 10, // 表示する記事数を指定
  "post__not_in" => [$current_post_id] // 除外する記事のIDを指定(配列)
];
$post_query = new WP_Query($args);
?>

"post__not_in"に渡すデータは配列である必要があるため、手順1で取得した$current_post_id[]で囲って配列にします。

これで現在表示中の記事は、記事一覧のループから除外されるようになりました。

この他にも様々な条件を指定できますので、詳しくはWP_Queryの関数リファレンスを確認してみてください。

手順3. 記事一覧を出力する

表示中の投稿を除いた記事一覧のデータが用意できたので、次は記事一覧を表示していきます。

記事一覧のデータは$post_queryに入っているので、while文でループさせて表示します。

<?php if ($post_query->have_posts()) : ?>
  <ul>
    <?php while ($post_query->have_posts()) : $post_query->the_post(); ?>
      <li>
        <a href="<?php the_permalink(); ?>">
          <?php the_title(); ?>
        </a>
      </li>
    <?php endwhile; ?>
  </ul>
<?php endif;
wp_reset_postdata(); ?>

ここではリンク付きの記事タイトル一覧が表示されるというシンプルな形にしていますが、この部分は各自カスタマイズしてください。

これで現在表示中の記事を除いた記事一覧が表示されるはずです。

以上でコードの解説は終わりです!

【まとめ】WordPressで現在表示中の記事を除外した記事一覧を表示する方法

現在表示中の記事を除外した最新記事一覧を出力する方法を紹介しました。

記事ページの中に「最近の投稿」などの記事一覧を表示したい場合に使えますので、ぜひ参考にしてみてください。

記事が役に立ったらサポートしてください

Web制作に関する
記事案を募集中!

Web制作について知りたいこと、質問等ありましたら、以下のフォームから気軽に投稿してください。
要望が多かったものは解説記事を作成します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次