[WordPress] 同一カテゴリーの記事リストを表示/ランダム表示

WordPressに同じカテゴリのエントリーリストを動的に表示するための php コード

コード

表示したいところに以下のソースを組み込む

<?php
$present_cat_info = get_the_category();
$present_cat_entry_list = get_posts(
  // 件数
  'numberposts=-1'
  // 現在のカテゴリー
  . '&category=' . $present_cat_info[0]->cat_ID
  // 除外ID
  . '&exclude=' . $posts[0]->ID
  // オーダー
  . '&orderby=post_modified'
);

if( count($present_cat_entry_list) > 0 ) {
  echo'<h3>同一カテゴリー記事</h3><div class="contents"><ul>';
  foreach( $present_cat_entry_list as $a_entry ) {
    echo'<li><a href="' . get_permalink($a_entry->ID) . '">'
      . $a_entry->post_title . '</a></li>';
  }
  echo'</ul></div>';
}
?>

表示するエントリーの数を変える場合は numberposts=5 の数字を変更する。 表示中の記事を除外しない場合は . '&exclude=' . $posts[0]->ID を消す。 カテゴリーからランダムで記事を抽出したい場合は orderby = rand に変更する。 カテゴリーを指定しない場合は、カテゴリ関係なしでランダムになる。

カスタムフィールドで画像を表示したりとか

<?php
$present_cat_entry_list = get_posts(
  'numberposts=5'
  . '&category=' . intval(get_query_var('cat'))
  . '&exclude=' . $posts[0]->ID
  . '&orderby=post_modified'
);

if( count($present_cat_entry_list) > 0 ) {
  echo'<h3>同一カテゴリーランダム記事</h3><div class="contents"><ul>';
  foreach ($present_cat_entry_list as $a_entry) {
    echo'<li><a href="' . get_permalink($a_entry->ID) . '">'
      .   '<img src="' . get_post_meta($a_entry->ID, "カスタムフィールドのキー", true) . '" />'
      .   $a_entry->post_title
      . '</a></li>';
  }
  echo'</ul></div>';
}
?>

参考リンク

テンプレートタグ/get posts - WordPress Codex 日本語版

Share