ふるぽんブログ Written by FURUPON

【wordpress自作テーマ】今表示されている記事と同じカテゴリーの記事を関連記事で表示する

Web制作

こんにちはふるぽんです。
今回は、ブログなどでサイドバーやページの下部にあるような、読んでいる記事の関連記事を表示する方法です。
正確には、読んでいる記事と同じカテゴリーの記事を表示する。です。
では行ってみましょう。

カテゴリーの情報を取得してループの設定をする

以下がコードになります。

<?php
$cats = get_the_category($post->ID);
    $cat_ID = array();
    foreach ($cats as $cat) :
      array_push($cat_ID, $cat->cat_ID);
    endforeach;
    $args = array(
      'post_type' => 'post',
      'post__not_in' => array($post->ID),
      'posts_per_page' => 3,
      'category__in' => $cat_ID,
      'orderby' => 'rand',
    );
?>

$catに読んでいる記事のカテゴリーIDを取得します。
$cat_IDに取得したカテゴリーIDを格納します。

array_pushはPHPの関数です。
配列に要素を追加したい時に使用します。

以下のように書きます。
array_push(追加先の配列,追加する値1,追加する値2,…)
array_pushについて詳しくはこちらをどうぞ
ここでは$cat_IDという配列に$cat->cat_IDでカテゴリーのIDを追加しています。

そして$argsにループの設定をしていきます。

‘post_type’ => ‘post’, //投稿タイプ
‘post__not_in’ => array($post->ID), //今読んでいる記事以外
‘posts_per_page’ => 3, //表示する数
‘category__in’ => $cat_ID, // 読んでいる記事カテゴリーを含む
‘orderby’ => ‘rand’, //ランダム

という感じです。

取得したカテゴリーの記事を表示

次にループで表示していきます。
見づらくなるので、class名は削除しています。
以下はサブループです。サブループについてはこちらの記事をどうぞ

$query = new WP_Query($args);
    if ($query->have_posts()) :
      while ($query->have_posts()) : $query->the_post();
    ?>
        <li >
          <div>
            <?php if (has_post_thumbnail()) :
              the_post_thumbnail();
            else : ?>
              <img src="http://myproject.local/wp-content/uploads/2008/06/img_0767.jpg" alt="">
            <?php endif; ?>
          </div>
          <div >
            <p >
              <a href="<?php the_permalink();?>">
                    <?php echo wp_trim_words(get_the_title(),20,'');?>
               </a>
            </p>
          </div>
        </li>
    <?php endwhile;
      wp_reset_postdata();
            else:
    ?>
    <p>同じカテゴリーの記事はありません</p>
    <?php endif;?>

wp_trim_wordsで文字数を制限しています。
詳しくはこちら

以上が、読んでいる記事と同じカテゴリーの記事を関連記事として表示する方法です。
わからないことがあれば、DM頂けましたら僕にできることはお手伝い&助言いたします。
こちらは40代の僕が独学で学習してきたことです。
何を勉強しようか迷ったら参考までにどうぞ

ゲームで仮想通貨の不労所得を稼ぐ【オンラインカジノBetfuryのやり方】