【WordPress】プラグインなしで関連記事・関連ページを出力

最終更新日: 公開日: 2024年09月

元々,Taxopress の関連記事を使っていたのだが,気づいたらエラーが出ていたので,この際,プラグインはやめて,自前の関数を呼ぶことにする.
こういうことが起こるのでプラグインは困るのである.
ということで,プラグインを使わない関連記事の表示方法について解説する.

関連記事の表示の自作方法

方針

まず,現在の原稿のタグを集めてきて,それらのタグを含む記事を集めてくる.
自分の記事も含まれるので,それを省き,ランダムに 5 個抜き出して表示する.

ショートコードで使えるようにするなら,プラグインとして作成するのが本来のようであるが,今回はプラグインとしては昨日させず,直接,single.php などに埋め込む方法をとる.

ソース

functions.php に追加

(スタイルシートは自分で適当に作ってください.)
下の例では投稿ページと固定ページの両方で関連記事を探している.
(2024/9/5 関連記事がない時の処理を追加.)

// 関連記事の表示
function insert_related() {
  $cur_tags = get_the_tags();
  $tags = array();
  if ($cur_tags) {
    foreach ($cur_tags as $tag) {
      $tags[] = $tag->term_id;
    }
  }
  $args = array(
    'post_type' => array('post', 'page'),
    'tag__in' => $tags,
    'post__not_in' => array(get_the_ID()),
    'posts_per_page' => 5,
    'orderby' => 'rand',
    'order'   => 'DESC'
  );
  $stRet = "<h2>関連ページ</h2>";
  if ($cur_tags) {
    $stRet .= "<ul>";
    $the_query = new WP_Query($args);
    if ( $the_query->have_posts() ) {
      while ( $the_query->have_posts() ) {
        $the_query->the_post();
        $stNew = '';
        if (date('Y-m-d', strtotime('-2 week')) < get_the_modified_date('Y-m-d')) {
          $stNew = 'class="new redafter blinkfadeout"';
        }
        $stRet .= "<li $stNew><a href='" . get_the_permalink() . "'>" . get_the_title() . "</a> <time datetime=" . get_the_modified_time('Y-m-d') . ">" . get_the_modified_time('Y.m.d') . "</time></li>";
      }
    }
    $stRet .= "</ul>";
  } else {
    $stRet .= "関連ページはありません";
  }
  return $stRet;
}

single.php に挿入

関連記事を表示したいところ(例えば,投稿ページなら single.php)に以下を挿入する.

<?php echo insert_related(); ?>
 

Contact

ご質問等ありましたら,お手数ですが弊社の個人情報保護方針をお読み頂いた上でフォームからお願い致します.
※このページと無関係な内容のセールスはご遠慮ください.

 
   
contact
Pagetop