プラグインを使わずにWordPressで関連記事を出す方法

TwitterFacebookHatena
  • 公開:2019-2-25
  • 更新:2023-10-26
  • 文章量:2241
  • WordPress

TL;DR

SEO の効果を高めたり、ユーザビリティをよくするためのレコメンド機能をプラグイン無しで簡単に実装する方法。詳細ページ(single.php)で、カテゴリをもとにランダムで記事を表示します。これはあくまでも簡易的なものとなります。

関連記事を出力するソースコード

get_the_category()で現在の投稿 ID を取得し、WP_Query の category__in でカテゴリーに属する投稿を拾ってランダムで出力します。つまり、現在表示されている投稿に属しているカテゴリーを引っ張ってきてランダムで表示しています。 get_the_category()の cat_ID はカテゴリー ID の値を引っ張ってきます。 WP_Query の category__in パラメータはカテゴリー ID を使います。

<div class="recommend">
  <?php
    $cat = get_the_category();
    $cat = $cat[0]; // [0]は先頭要素
    $the_query = new WP_Query( array(
     'category__in' => $cat->cat_ID, // category__inはカテゴリーIDを使う
     'post_type' => 'post',
     'posts_per_page' => 4, // 表記数
     'orderby'=> 'rand' // ランダム
    ) );
  ?>
  <?php if ( $the_query->have_posts() ) : ?>
  <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
  <article>
    <div class="recommend__thumbnail">
      <a href="<?php the_permalink(); ?>">
        <?php if (has_post_thumbnail()) : ?>
          <?php the_post_thumbnail(); ?>
        <?php else : ?>
          <img src="<?php echo get_template_directory_uri(); ?>/img/dummy.png" alt="">
        <?php endif; ?>
      </a>
    </div>
    <div class="recommend__text">
      <header>
        <a href="<?php the_permalink(); ?>">
          <?php the_title(); ?>
        </a>
      </header>
    </div>
  </article>
  <?php endwhile; ?>
  <?php wp_reset_postdata(); ?>
  <?php else : ?>
  <?php endif; ?>
</div>

アイキャッチ画像が無い場合は img ディレクトリを作って dummy.png を表示するようにしています。img ディレクトリにダミー画像を置いてください。

get_the_category

get_the_category は、現在の投稿が属するカテゴリーを返します。パラメータの初期値は現在の投稿 ID となります。

var_dump を使うと返り値を確認することができます。term_id/cat_ID はカテゴリー ID、name はカテゴリー名、slug はスラッグ名、parent は親カテゴリー ID などを取得できます。参考:テンプレートタグ/get the category - WordPress Codex 日本語版

<?php
  global $post;
  $categories = get_the_category( $post->ID );
  var_dump( $categories );
?>

WP_Query

WP_Query とは WordPress のコアの中にあるクラスで、様々な投稿を読み込んで処理します。WordPress 内部で実行されるメインクエリはメインループ、WP_Query はサブループと呼ばれます。

$変数 = new WP_Query();

WP_Query については、ここで詳しく触れませんが、サブループを使うことによって本来のループとは別のループを作れるので、覚えておくとよいでしょう。 以上、WordPress のシングルページでプラグインを使わずに関連記事を出力する方法でした。

プラグインを使わずにWordPressで関連記事を出す方法